Mundarija:
- 1 -qadam: Fikr tushunchasi
- 2 -qadam: materiallar ro'yxati
- 3 -qadam: asboblar
- 4 -qadam: ramka yaratish
- 5 -qadam: Yakuniy tasvirlar va kontseptsiyalarni chizish
- 6 -qadam: harakatlanuvchi tasvirni kesib oling
- 7 -qadam: dasturiy ta'minotni tayyorlash
- 8 -qadam: Uskuna quvvat manbai
- 9 -qadam: uskunani kiritish -chiqarish va OUTPUTni tekshirish (NeoPixel ishi)
- 10 -qadam: yig'ish va g'ildirakka mahkamlash
- 11 -qadam: INPUT (HALL Sensor Data) ni tekshirish
- 12 -qadam: kodlash algoritmi
- 13 -qadam: dasturiy ta'minotdan foydalanish
- 14 -qadam: To'liq
Video: Digilog_Bike POV displeyi: 14 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Digilog
Raqamli + analog
Raqamli analogga mos keladi
POV
Vizual chidamlilik
Keyingi tasvir sifatida ham tanilgan, agar yuqori tezlikda silkitilsa, keyingi rasm qoladi.
Odamlar televizor ko'rganda videoni ko'rayapman deb o'ylashadi. Lekin, aslida, u ketma -ket bir nechta rasmlarga qaraydi. Bu rasm sifatida yanglishdir, chunki ketma -ket rasmlarni ko'rishda ko'zning to'r pardalarida qolgan tasvirlar ta'siri tufayli. Bunday xayolga POV deyiladi.
1 -qadam: Fikr tushunchasi
POV velosiped g'ildiragiga LED tasmasini ulash orqali amalga oshiriladi.
2 -qadam: materiallar ro'yxati
Hisoblash va kirish -chiqish
1. Arduino Mega 2560 [arduino] x3
2. Zal sensori moduli V2 [YwRobot] x3
3. WS2812-5050 moslashuvchan Neopixel [Adafruit] x3
4. Magnit (diametri 15 mm, qalinligi 50 mm) x3
5. Arduino Mega Case x3
Quvvat liniyasi
5. 5000mAh/3.7V lityum batareya [TheHan] x3
6. AVR 5V regulyatori va zaryadlash va PCM moduli: JBATT-U5-LC [Jcnet] x3
7. 4Jumperli simlar to'plami 65PCS/SET [OR0012] x3
3 -qadam: asboblar
Juda ko'p vositalar kerak emas, lekin sizga kerak bo'ladi:
1. Lehimlash mashinasi
2. Payvand choki
3. Yelimli qurol
4. Nipper
4 -qadam: ramka yaratish
Velosipedni kesish va tayanchni biriktirish
Tegirmonni velosiped g'ildiraklarini kesish uchun ishlatilgan va g'ildiraklarni mahkamlash uchun po'lat plitalar payvandlangan.
5 -qadam: Yakuniy tasvirlar va kontseptsiyalarni chizish
Biz ajdarni yakuniy tasvir sifatida tanladik. Chunki ajdaho to'lqini tasvirdan keyingi effekt bilan yaxshi ifodalanganga o'xshardi.
6 -qadam: harakatlanuvchi tasvirni kesib oling
Rasmni har bir velosipedga mos keladigan uch qismga bo'ling va jami 12 ta tasvirni rang va harakatga bo'ling.
7 -qadam: dasturiy ta'minotni tayyorlash
Sub -qism 1. Arduino -ni o'rnating
Arduino -ni yuklab olish:
(O'rnatish sizning OS versiyangiz va tizimingizga mos keladi.)
-
2 -qism. Kutubxonani o'rnating
*(Agar siz Github orqali o'rnatmoqchi bo'lsangiz, Github Arduino kutubxonasi yuqoridagi havolaga tashrif buyuring:
1. Arduino dasturini ishga tushiring
2. Havolaga ruxsat bering Yuqori menyu - eskiz - kutubxonani o'z ichiga oladi - zip kutubxonasini qo'shing
3. Siz allaqachon github library4 o'rnatilgan. Zip faylini tanlashingiz kerak
*(Agar siz Arduino dasturining xizmatlaridan foydalanmoqchi bo'lsangiz)
1. Arduino dasturlarini ishga tushiring
2. Havolaga ruxsat bering Top menyu - eskiz - kutubxonani o'z ichiga oladi - boshqaruv kutubxonasi - "Adafruit neopixelini" qidirish - "Adafruit neopixel by Adafruit" ni ko'rishingiz mumkin.
3. Kutubxonani o'rnating va yangilang
-
Pastki qism 3. Konverter dasturini o'rnating
1. Rotation Circle dasturini o'rnating (R. C. P):
2. README faylini o'qish kerak
8 -qadam: Uskuna quvvat manbai
*Arduino 5V kuchlanishini batareya orqali shunday etkazib berish mumkin. Iltimos, quyidagi amallarni bajaring.
1. Lityum batareya va JBATT zaryad modulini ulang. (Ma'lumot uchun, JBATT modulida o'rnatilgan quvvat tugmasi mavjud.)
2. JBATT chiqish terminalini Arduino va Ground terminalining Vin terminaliga ulang.
3. Micro 5pin usb portini zaryadlash portiga ulang va mahsulotning to'g'ri ishlayotganligini tekshiring.
4. Keyin, o'rnatilgan kalitni ON holatiga o'tkazing.
5. Agar Arduino -da qizil svetodiod yonib tursa va yashil chiroq yonsa, mahsulotning quvvat bosqichi konfiguratsiyasi odatdagidek bajariladi.
9 -qadam: uskunani kiritish -chiqarish va OUTPUTni tekshirish (NeoPixel ishi)
*Bu qism sensor va chiqish bosqichidan iborat
1. Arduino va Hall datchiklarini ulang. Ma'lumot pinasi Arduino pin 2 ga ulanadi.
2. Arduino yoqilganda va magnit Hall sensori bilan yaqin aloqada bo'lsa, qizil chiroq yonadi.
3. Arduino va Neopixelni ulang. Faqat 30 ta Neopixel ishlatiladi.
4. Ma'lumot pinini Arduino pin 6 bilan ulang.
5. Arduino va yuklash kabelini kompyuterning usb portiga ulang va kompyuteringizda Arduino -ni ishga tushiring.
6. Arduino dasturining yuqori menyusidagi asboblar paneli - "Arduino / Genuino Mega yoki Mega 2560" -ni tanlang.
7. Portga to'g'ridan -to'g'ri ulanishi mumkin bo'lgan mahsulotlar ro'yxati mavjudligini tekshiring. Agar u belgilanmagan bo'lsa, uni tanlash uchun bosing.
8. Quyidagi kodni joylashtiring va chap yuqori qismidagi Yuklash -ni bosing. (Keyinchalik, barcha dasturlarni yuklash 5-8 bosqichlarni bajaradi.)
9. Barcha 30 ta neoled piksel yoqilganda konfiguratsiya tugallanadi.
#1. sarlavha faylini va oldindan ishlov berishni o'z ichiga oladi
Birinchidan, biz kutubxonani Adafruit_NeoPixel -ga olib kelishimiz kerak, u Neopixellarni bajarishga qodir.
Kutubxonadan ob'ektlarni e'lon qilishda foydalanish mumkin.
Adafruit_NeoPixel klassi 3 parametrni omma oldida kiritishi mumkin.
Birinchi parametr - bu LEDlarning soni.
soniya parametri - Neopixel raqamli kirishiga ulangan pin raqami.
Uchinchi parametr - mahsulot xususiyatlariga muvofiq variantlarni kiritish. uch rangli WS2812b mahsuloti "NEO_GRB" usulidan foydalanadi
#qo'shing
#define PIN 6 Adafruit_NeoPixel strip = Adafruit_Neopixel (30, PIN, NEO_GRB+NEO_KHZ800);
#2. sozlash
O'rnatish qismida ob'ektni ishga tushiring va foydalanishga tayyorlang.
'Adafruit_Neopixle_Object.begin ()' barcha LEDlarni o'chirishni o'rnatadi.
"Adafruit_Neopixle_Object.show ()" chirog'i LEDda o'rnatiladi.
bo'sh o'rnatish () {
strip.begin (); strip.show (); }
#3. asosiy halqa
Asosiy pastadir oq rangdagi LEDlarni ketma -ket chiqarish uchun (0,1 soniya) for loopdan foydalanadi
void loop () {
uchun (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, 255, 255, 255); strip.show (); kechikish (100); }}
10 -qadam: yig'ish va g'ildirakka mahkamlash
1. Neopiksellarni ulang. (PIN -kodni tekshirishga e'tibor bering)
2. Zal sensori ulang. (9 -qadamga qarang)
3. Velosipedlar orasidagi ramkani Arduino -ga ulang. (Arduino korpusini velosiped ramkasiga parallel ulang).
4. Neopixelga ulangan Arduino -ni joylashtiring. (Ehtiyot bo'ling, chunki yopishtiruvchi qurol issiq).
5. Arduino -ga ulangan Hall sensorini joylashtiring, (Hall sensori yiqilmasligi uchun simi bog'ichini mahkamlang).
6. Batareyani ulash uchun lehim. (Lehimlashda ehtiyot bo'ling).
7. Uni yopishtiruvchi qurol bilan mahkamlang. (Bo'sh joyni ta'minlash uchun zaryadlash modulini batareyaga ulang).
8. Arduino -ga ulanishdan oldin har bir qatorni ulang.
9. Har bir pin raqamiga ko'ra ulang. (Zaryadlovchi moduli uchun o'tish chiziqlarini chalkashtirmasdan ulang).
10. Bir marta yopishtiruvchi qurol bilan tugating, (Yiqilmaslik uchun ehtiyot bo'ling).
11 -qadam: INPUT (HALL Sensor Data) ni tekshirish
*Sensor ishlayotganini bilish uchun dastur kodini tekshiring.
1. Quyidagi kodni joylashtiring va yuklang.
2. Arduino yuqori o'ng burchagidagi Serial Monitor tugmasini bosing.
3. Magnit Hall sensori bilan 1 soniyadan ko'proq aloqa qilganda, konfiguratsiya ketma -ket monitorda "kontakt magnit" so'zi paydo bo'lganda tugallanadi.
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- #1. PIN -kod va sozlamalarni aniqlang
Birinchi konfiguratsion pin raqami Hall sensori yordamida va pin raqamini faqat kirish porti sifatida o'rnatiladi.
Ketma -ket monitorda Hall sensori ma'lumotlarini tekshirish uchun aloqani o'rnating.
#zalni belgilang 2
void setup () {pinMode (HALL, INPUT); Serial.begin (9600); }
#2. asosiy halqa
Zal sensori ma'lumotlarini 0,1 soniya oralig'ida tekshiring.
Agar magnit sezilsa va ma'lumotlar o'zgartirilsa, ketma -ket monitorga "kontakt magnit" chiqariladi.
void loop () {
if (digitalRead (HALL)) {Serial.println ("kontaktli magnit"); } kechikish (100); }
12 -qadam: kodlash algoritmi
*Sensor qiymatlari asosida Neopixellarni boshqarish uchun mantiq va kod yaratish.
1. Quyidagi kodni joylashtiring va yuklang.
2. Tasvirning to'g'ri ko'rsatilmasligi odatiy holdir, chunki kadr ishlab chiqarilmaydi. Lekin siz uning taxminan ishlayotganini ko'rishingiz mumkin.
3. Hall sensori va magnitini 1 soniya ichida tez bosib turing. Ushbu operatsiyani taxminan 10 marta takrorlang.
4. Neopiksellarning ranglari muntazam o'zgarganda konfiguratsiya tugallanadi.
#1. Sarlavha fayllari va oldindan ishlov berishni o'z ichiga oladi
Birinchidan, biz tushunishimiz kerakki, Arduino Mega xotirasi rasm faylini saqlash uchun etarli emas.
Shuning uchun, "avr/pgmspace" sarlavha fayli turli xil xotira maydonlaridan foydalanish uchun ishlatiladi.
Neopikseldan foydalanish uchun siz ob'ekt va konfiguratsiyani kiritish -chiqarish pin raqamini e'lon qilasiz.
Rasmlar majmuasi kodlash uchun juda katta, shuning uchun biriktirilgan fayllarni yuklab oling va joylashtiring.
#qo'shing
#kiritish #PIN kodini belgilash 6 #NUMPIXELSni belgilash 30 #zalni belgilash 2 Adafruit_NeoPixel tasmasi = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); // qatorni 'image_array_1.txt' ga joylashtiring // "'image_array_2.txt' //" 'image_array_3.txt' // "'image_array_4.txt'
#2. Global o'zgaruvchi va sozlash
Global o'zgaruvchini o'rnating.
Asosiysi, yorqinlikni sozlash, bu mahsulotning hayotiy tsiklini belgilaydi.
int soni = 0;
er -xotin v = 0; ikki marta oxirgi_v = 0; er -xotin taymer = mikrosxemalar (); er -xotin ex_timer = mikrosxemalar (); ikkilamchi last_timer = mikrosxemalar (); int deg = 36; int piksel = 35; int rgb = 3; ikkita q_arr [2] = {0, 0}; int HALL_COUNT = 0; ikki tomonlama VELO; er -xotin ishlov berish_metr = mikrosxemalar (); void setup () {strip.setBrightness (255); strip.begin (); strip.show (); Serial.begin (230400); }
#3. asosiy halqa - tasvir ifodasining chiqish qismi
Bu kod g'ildirakning aylanish vaqtini piksellar soniga qanday chiqarish haqida shartli bayon.
Bu qism juda muhim parametr sifatida velosiped g'ildiragini bir marta aylantirish tsiklidan foydalanadi.
Shuningdek, tasvirlar massivi ma'lumotlarini xotiradan o'qish muhim.
void loop () {
if ((hisoblash (ex_timer / 120.0) - (micros () - ishlov berish_timmer)))) {taymer = mikros (); if (VELO> 360000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_1 [count] [1]))), pgm_read_byte (& ((image_1 [count] [2])), pgm_read_byte (& (image_1 [count] [0]))))); } strip.show (); } if if (VELO 264000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_2 [count] [1]) ()), } strip.show (); } if if (VELO 204000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_3 [count] [1]))), pgm_read_byte (& ((image_3 [count] [2])), pgm_read_byte (& (image_3 [count] [0]))))); } strip.show (); } if if (VELO <= 204000) {for (int i = 0 + 5; i = 120)) {for (int i = 0 + 5; i <pix; i ++) {strip.setPixelColor (i - 5, tasma). Rang (0, 0, 0)); } strip.show (); }
#4. Asosiy tsikl - ishlov berish va tsikl vaqtini tekshirish va sezish
Bu butun tizimning eng muhim qismi.
Birinchidan, butun kodni bajarish uchun sarflangan vaqtni tekshiring va har bir tsikl uchun LED chiqish vaqtini sozlang.
Har safar g'ildirak aylanayotganda sezilgan vaqt keyingi tsikl vaqtini bashorat qiladi.
Tezlikni, oxirgi o'lchangan tsikl vaqtini o'z vaqtida o'lchangan tsikl vaqtidan olib tashlash orqali aniqlash mumkin.
Tizim LEDlarning qancha vaqt doimiy yonib turishini hisoblash uchun ishlov berish vaqtini va tezlanishini hisoblab chiqadi.
ishlov berish_metr = mikrosxemalar ();
if ((digitalRead (HALL) == HIGH) && (HALL_COUNT == 1)) {VELO = v; v = mikrosxemalar () - oxirgi_sayt; ex_timer = q_arr [0] - q_arr [1] + v; last_timer = mikrosxemalar (); q_arr [0] = q_arr [1]; q_arr [1] = v; hisoblash = 0; HALL_COUNT = 0; } if if (digitalRead (HALL) == LOW) {HALL_COUNT = 1; }}
13 -qadam: dasturiy ta'minotdan foydalanish
*Tasvirni o'zgartirish va protsessual ma'lumotlarni kodga kiritish uchun dasturiy ta'minotdan foydalaning
1. Yuqoridagi qadamdagi tasvirni tayyorgarlik bosqichida o'rnatilgan R. C. P papkasidagi tasvir papkasiga joylashtiring.
- Tasvirni qanday qo'yish kerak- 1-sonli mahsulotning 4 ta animatsion tasvirini 1.png, 2.png, 3-p.webp
2. Ver.5.exe faylini ishga tushiring.
3. R. C. P papkasida pro_1_code_1.txt dan pro_3_code_4.txtgacha bo'lgan 12 ta fayl yaratilganligini tekshiring.
4. Agar u yaratilmagan bo'lsa, config.txt tarkibini quyidagi konfiguratsiya fayli sifatida o'zgartiring.
5. Fayl yaratilgandan so'ng, pro_1_code_1.txt faylidan butun tarkibni nusxa ko'chiring va uni quyidagi kodda ko'rsatilgan qismga joylashtiring.
6. Belgilangan qismga 5 -tartibda pro_1_code_2.txt, pro_1_code_3.txt va pro_1_code_4.txt tarkiblarini qo'shing.
7. 5 va 6 ga ishora qilib, pro_2_code…, pro_3_code xuddi shu tarzda kodni to'ldiradi.
14 -qadam: To'liq
Uchta g'ildirakli bitta tasvirni yaratadigan POV ishlab chiqarilishi yakunlandi.
Tavsiya:
Hammasini boshqaradigan bitta POV displeyi: 10 qadam (rasmlar bilan)
Hammasini boshqaradigan bitta POV displeyi !: Motivatsiya Menga POV (ko'rishning qat'iyatliligi) displeylari juda yoqadi! Ularni ko'rib chiqish nafaqat qiziq, balki ularni rivojlantirish uchun ham katta qiyinchilik. Bu, albatta, fanlararo vazifadir. Sizga juda ko'p ko'nikmalar kerak: mexanik, elektron, dasturlash va
Arduino Horisontal POV displeyi: 3 qadam
Arduino Horisontal POV displeyi: 5LED-s va Arduino Nano bilan eng oddiy POV-displey
PropHelix - 3D POV displeyi: 8 qadam (rasmlar bilan)
PropHelix - 3D POV displeyi: Odamlar har doim golografik tasvirlardan zavqlanishgan. Buni amalga oshirishning bir necha yo'li bor, mening loyihamda men LED chiziqlarining aylanadigan spiralidan foydalanaman. Hammasi bo'lib 16 ta 17280 ta vokselni ko'rsatadigan 144 ta LED mavjud. Voksellar arra
POV velosiped displeyi - ESP8266 + APA102: 7 qadam (rasmlar bilan)
POV velosipedlari displeyi - ESP8266 + APA102: ** DISCLAIMER ** Bu ko'rsatma magistrlik dissertatsiyamning bir qismi edi va hech qanday tarzda tugallanmagan. Hozirda menda ish joyi yo'q, shuning uchun uni sinovdan o'tkazish va qurish uchun joy bo'lmaguncha tugata olmayman
Arduino simsiz quvvat POV displeyi: 6 qadam (rasmlar bilan)
Arduino Wireless Power POV displeyi: Men bu kichkina qurilmani birinchi marta uchratganimda, menga darhol yoqdi. Men shaxsiy POVni yaratishga qaror qildim. Men ko'plab videolarni ko'rdim va ba'zi asosiy muammolarni aniqladim. Mikro-nazoratchining quvvat manbai eng katta edi. Batareya yoki aylanadigan kommutat