Mundarija:

Digilog_Bike POV displeyi: 14 qadam
Digilog_Bike POV displeyi: 14 qadam

Video: Digilog_Bike POV displeyi: 14 qadam

Video: Digilog_Bike POV displeyi: 14 qadam
Video: Pilot Lands His Helicopter Neatly Over Truck 2024, Iyul
Anonim
Image
Image

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

Fikr tushunchasi
Fikr tushunchasi

POV velosiped g'ildiragiga LED tasmasini ulash orqali amalga oshiriladi.

2 -qadam: materiallar ro'yxati

Materiallar ro'yxati
Materiallar ro'yxati
Materiallar ro'yxati
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

Asboblar
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

Image
Image
Ramka yasash
Ramka yasash

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

Yakuniy tasvirlar va tushunchalarni chizish
Yakuniy tasvirlar va tushunchalarni chizish
Yakuniy tasvirlar va tushunchalarni chizish
Yakuniy tasvirlar va tushunchalarni chizish
Yakuniy tasvirlar va tushunchalarni chizish
Yakuniy tasvirlar va tushunchalarni 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

Harakatlanuvchi tasvirni kesib oling
Harakatlanuvchi tasvirni kesib oling
Harakatlanuvchi tasvirni kesib oling
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

Dasturiy ta'minotni tayyorlash
Dasturiy ta'minotni tayyorlash
Dasturiy ta'minotni tayyorlash
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

Uskuna quvvat manbai qilish
Uskuna quvvat manbai qilish
Uskuna quvvat manbai qilish
Uskuna quvvat manbai qilish
Uskuna quvvat manbai qilish
Uskuna quvvat manbai qilish

*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)

Uskuna kiritish -chiqarish va OUTPUTni tekshirish (NeoPixel ishi)
Uskuna kiritish -chiqarish va OUTPUTni tekshirish (NeoPixel ishi)
Uskuna kiritish -chiqarish va OUTPUTni tekshirish (NeoPixel ishi)
Uskuna kiritish -chiqarish va OUTPUTni tekshirish (NeoPixel ishi)
Uskuna kiritish/chiqish va OUTPUTni tekshirish (NeoPixel ishi)
Uskuna kiritish/chiqish 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

O'rnatish va g'ildirakka mahkamlash
O'rnatish va g'ildirakka mahkamlash
O'rnatish va g'ildirakka mahkamlash
O'rnatish 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

Kirish tekshirilmoqda (HALL sensori ma'lumotlari)
Kirish tekshirilmoqda (HALL sensori ma'lumotlari)
Kirish tekshirilmoqda (HALL sensori ma'lumotlari)
Kirish tekshirilmoqda (HALL sensori ma'lumotlari)
Kirish tekshirilmoqda (HALL sensori ma'lumotlari)
Kirish tekshirilmoqda (HALL sensori ma'lumotlari)

*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

Dasturiy ta'minotdan foydalanish
Dasturiy ta'minotdan foydalanish
Dasturiy ta'minotdan foydalanish
Dasturiy ta'minotdan foydalanish
Dasturiy ta'minotdan foydalanish
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

To'liq
To'liq
To'liq
To'liq
To'liq
To'liq

Uchta g'ildirakli bitta tasvirni yaratadigan POV ishlab chiqarilishi yakunlandi.

Tavsiya: