Բովանդակություն:
- Քայլ 1: Գաղափարի հայեցակարգ
- Քայլ 2: Նյութերի ցուցակ
- Քայլ 3: Գործիքներ
- Քայլ 4: Շրջանակ պատրաստելը
- Քայլ 5. Վերջնական պատկերների և հասկացությունների ուրվագծում
- Քայլ 6. Կտրեք շարժվող պատկերի կտրվածքը
- Քայլ 7: Softwareրագրաշարի պատրաստում
- Քայլ 8: Սարքավորման էներգիայի մատակարարման պատրաստում
- Քայլ 9. Սարքավորման մուտքի/ելքի պատրաստում և ելքի ստուգում (NeoPixel- ը աշխատում է)
- Քայլ 10. Հավաքում և կցում անիվին
- Քայլ 11. Մուտքի ստուգում (HALL Sensor Data)
- Քայլ 12: Կոդավորման ալգորիթմ
- Քայլ 13: Usingրագրակազմի օգտագործումը
- Քայլ 14: Ավարտեք
Video: Digilog_Bike POV Displayուցադրել. 14 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Դիջիլոգ
Թվային + անալոգային
Թվայինը հանդիպում է անալոգային
POV
Տեսողական դիմադրություն
Նաև հայտնի է որպես հետերկրյա ցուցադրում, եթե բարձր արագությամբ ցնցվում է, հետերկրյա պատկերը մնում է:
Մարդիկ կարծում են, որ հեռուստացույց դիտելիս տեսանյութ են դիտում: Բայց իրականում նա նայում է մի քանի հաջորդական նկարներ: Սա սխալվում է որպես պատկերի ՝ հաջորդական նկարները դիտելիս մեր ցանցաթաղանթների վրա մնացած պատկերների ազդեցության պատճառով: Նման պատրանքը կոչվում է POV:
Քայլ 1: Գաղափարի հայեցակարգ
POV- ն իրականացվում է հեծանիվի անիվին LED ժապավեն ամրացնելով:
Քայլ 2: Նյութերի ցուցակ
Հաշվողականություն և ելք
1. Arduino Mega 2560 [arduino] x3
2. Hall ցուցիչ V2 [YwRobot] x3 մոդուլ
3. WS2812-5050 ibleկուն նեոպիքսել [Ադաֆրուտ] x3
4. Մագնիսական (տրամագիծը ՝ 15 մմ, հաստությունը ՝ 50 մմ) x3
5. Arduino Mega Case x3
Էլեկտրահաղորդման գիծ
5. 5000mAh/3.7V լիթիումի մարտկոց [TheHan] x3
6. AVR 5V կարգավորիչ և լիցքավորում և PCM մոդուլ ՝ JBATT-U5-LC [Jcnet] x3
7. 4Jumper մետաղալար հավաքածու 65PCS/SET [OR0012] x3
Քայլ 3: Գործիքներ
Ոչ շատ գործիքներ են անհրաժեշտ, սակայն ձեզ հարկավոր կլինի.
1. oldոդման մեքենա
2. Sոդման երկաթ
3. Սոսինձ ատրճանակ
4. Niակոտիչ
Քայլ 4: Շրջանակ պատրաստելը
Հեծանիվ կտրելը և հիմքը ամրացնելը
Հղիչը օգտագործվում էր հեծանիվի անիվները հեծանիվից կտրելու համար, իսկ անիվները ամրացնելու համար եռակցված պողպատե ափսեներ:
Քայլ 5. Վերջնական պատկերների և հասկացությունների ուրվագծում
Մենք որպես վիշապ ընտրեցինք որպես վերջնական պատկեր: Որովհետև վիշապի ալիքը կարծես լավագույնս ներկայացված էր հետերկրյա էֆեկտով:
Քայլ 6. Կտրեք շարժվող պատկերի կտրվածքը
Պատկերը բաժանեք երեք մասի, որոնք տեղավորվելու են յուրաքանչյուր հեծանիվի վրա և ընդհանուր 12 պատկերների բաժանել ըստ գույնի և շարժման:
Քայլ 7: Softwareրագրաշարի պատրաստում
Ենթամասն 1. Տեղադրեք Arduino- ն
Arduino ներբեռնում ՝
(Տեղադրեք ՝ ձեր OS տարբերակին և համակարգին համապատասխանելու համար):
-
Ենթամասն 2. Տեղադրեք գրադարանը
*(Եթե ցանկանում եք տեղադրել Github- ի միջոցով, այցելեք Github Arduino գրադարանի վերևի հղումը ՝
1. Գործարկեք Arduino ծրագիրը
2. Թույլատրել հղումը Վերևի ընտրացանկ - ուրվագիծ - ներառել գրադարանը - ավելացնել. ZIP գրադարան
3. Դուք պետք է ընտրեք. Zip ֆայլը, որն արդեն տեղադրել է github Library4
*(Եթե ցանկանում եք օգտվել Arduino ծրագրի ծառայություններից)
1. Գործարկեք Arduino ծրագրերը
2. Թույլատրել հղումը Վերևի ընտրացանկ - ուրվագիծ - ներառել գրադարան - կառավարման գրադարան - որոնել «Adafruit neopixel» - կարող եք տեսնել «Adafruit Neopixel by Adafruit»
3. Տեղադրեք և թարմացրեք գրադարանը
-
Ենթամասն 3. Տեղադրեք փոխարկիչ ծրագիրը
1. Տեղադրեք Պտտման շրջանակի ծրագիրը (R. C. P) ՝
2. Անհրաժեշտ է կարդալ README ֆայլ
Քայլ 8: Սարքավորման էներգիայի մատակարարման պատրաստում
*Ահա թե ինչպես կարելի է Arduino 5V լարումը մատակարարել մարտկոցի միջոցով: Խնդրում ենք հետևել ստորև նշված քայլերին:
1. Միացրեք լիթիումի մարտկոցը և JBATT լիցքավորման մոդուլը: (Որպես տեղեկություն, JBATT մոդուլն ունի ներկառուցված հոսանքի անջատիչ):
2. JBATT- ի ելքային տերմինալը միացրեք Arduino- ի և Ground տերմինալի Vin տերմինալին:
3. Միացրեք Micro 5pin USB պորտը լիցքավորման պորտին `ստուգելու, արդյոք ապրանքը ճիշտ է աշխատել:
4. Հաջորդը, ներկառուցված անջատիչը միացրեք ON:
5. Եթե կարմիր լուսարձակը լուսավորվի և կանաչ լուսավորվի Արդուինոյում, արտադրանքի հզորության աստիճանի կարգավորումը նորմալ ավարտված է:
Քայլ 9. Սարքավորման մուտքի/ելքի պատրաստում և ելքի ստուգում (NeoPixel- ը աշխատում է)
*Այս մասը բաղկացած է սենսորից և ելքային փուլից:
1. Միացրեք Arduino և Hall սենսորները: Տվյալների կապը միանում է Arduino կապին 2 -ին:
2. Երբ Arduino- ն սնուցվում է, և մագնիսը սերտ կապի մեջ է Hall սենսորի հետ, կարմիր լուսարձակը լուսավորվելու է:
3. Միացրեք Arduino- ն և Neopixel- ը: Օգտագործվում է ընդամենը 30 նեոպիքսել:
4. Տվյալների կապը միացրեք Arduino 6 -րդ կապին:
5. Միացրեք Arduino- ն և ներբեռնեք մալուխը ձեր համակարգչի USB պորտին և գործարկեք Arduino- ն ձեր համակարգչի վրա:
6. Arduino ծրագրի վերևի ընտրացանկից ընտրեք Գործիք - տախտակ - «Arduino / Genuino Mega կամ Mega 2560»:
7. Ստուգեք, արդյոք կա ապրանքների ցանկ, որոնք կարող են ուղղակիորեն միացվել նավահանգստին: Եթե այն ստուգված չէ, կտտացրեք այն ընտրելու համար:
8. Տեղադրեք ներքևի ծածկագիրը և կտտացրեք Վերբեռնել ձախ վերևում: (Հետո, ծրագրի բոլոր վերբեռնումները հետևում են 5-8-րդ քայլերին):
9. Կոնֆիգուրացիան ավարտված է, երբ միացված են բոլոր 30 նեոլավորված պիքսելները:
#1 ներառյալ վերնագրի ֆայլը և նախամշակումը
Սկզբում մենք պետք է բերենք Adafruit_NeoPixel գրադարանը, որն ունակ է գործել Neopixels- ով:
Գրադարանը կարող է օգտագործվել օբյեկտներ հայտարարելով:
Adafruit_NeoPixel դասը կարող է հանրության առջև մուտքագրել 3 պարամետր:
Առաջին պարամետրը LED- ների թիվն է:
վայրկյանների պարամետրը Neopixel թվային մուտքին միացված քորոցի համարն է:
Երրորդ պարամետրը արտադրանքի բնութագրերին համապատասխան ընտրանքների մուտքագրումն է: եռագույն WS2812b արտադրանքը օգտագործում է «NEO_GRB» մուտքը
#ներառում
#սահմանեք PIN 6 Adafruit_NeoPixel շերտ = Adafruit_Neopixel (30, PIN, NEO_GRB+NEO_KHZ800);
#2 կարգավորում
Կարգավորման մասում սկզբնականացրեք օբյեկտը և պատրաստեք այն օգտագործման համար:
'Adafruit_Neopixle_Object.begin ()' - ը անջատում է բոլոր LED- ները:
'Adafruit_Neopixle_Object.show ()' արդյունքները լուսադիոդում տեղադրված պայծառությամբ:
void setup () {
strip.begin (); strip.show (); }
#3 հիմնական հանգույց
Հիմնական հանգույցի գործողությունը օգտագործում է for loop- ը `հաջորդաբար (0.1 վայրկյան) LED- ները սպիտակ գույնով թողարկելու համար
դատարկ շրջան () {
for (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, 255, 255, 255); strip.show (); ուշացում (100); }}
Քայլ 10. Հավաքում և կցում անիվին
1. Միացրեք նեոպիքսելները: (Ուշադրություն դարձրեք կապի համարի ստուգմանը)
2. Միացրեք Hall Sensor- ը: (Տես `Քայլ 9)
3. Կցեք շրջանակը Arduino- ին հեծանիվների միջև: (Կցեք Arduino- ի պատյանը հեծանիվի շրջանակին զուգահեռ):
4. Տեղադրեք Neopixel- ին միացված Arduino- ն: (Carefulգույշ եղեք, քանի որ սոսինձի ատրճանակը տաք է):
5. Տեղադրեք միացված Hall սենսորը Arduino- ի մեջ (ամրացրեք մալուխի կապը այնպես, որ Hall սենսորը չընկնի):
6. erոդիչ `մարտկոցը միացնելու համար: (Soldոդման ժամանակ զգույշ եղեք):
7. Ամրացրեք այն սոսինձ ատրճանակով: (Տեղադրեք լիցքավորման մոդուլը մարտկոցի վրա `տարածք ապահովելու համար):
8. Միացրեք յուրաքանչյուր տող Arduino- ին միանալուց առաջ, 9. Միացրեք ըստ յուրաքանչյուր կապի համարի: (Միացրեք ցատկման գծերը լիցքավորման մոդուլի համար `առանց դրանք շփոթելու):
10. Մեկ անգամ ավարտեք սոսինձ ատրճանակով, (Խնդրում ենք զգույշ լինել, որ չընկնեք):
Քայլ 11. Մուտքի ստուգում (HALL Sensor Data)
*Ստուգեք ծրագրակազմի ծածկագիրը ՝ տեսնելու, թե արդյոք սենսորը աշխատում է:
1. Տեղադրեք և վերբեռնեք ներքևի ծածկագիրը:
2. Սեղմեք Arduino- ի վերևի աջ մասում գտնվող Serial Monitor կոճակը:
3. Երբ մագնիսը 1 վայրկյանից ավելի է շփվում Hall սենսորի հետ, կազմաձևումն ավարտվում է, երբ սերիական մոնիտորի վրա հայտնվում է «կոնտակտային մագնիսական» բառը:
------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ #1 Սահմանեք PIN- ի համարը և կարգավորումը
Առաջին կազմաձևման PIN համարը, որն օգտագործում է Hall սենսորը և սահմանում է PIN- ի համարը որպես Մուտքի միայն պորտ:
Սահմանեք հաղորդակցությունը `սերիական մոնիտորի վրա Hall սենսորի տվյալները ստուգելու համար:
#սահմանեք ՍՐԱՀ 2
void setup () {pinMode (HALL, INPUT); Serial.begin (9600); }
#2 հիմնական հանգույց
Ստուգեք Hall սենսորի տվյալները 0.1 վայրկյան ընդմիջումներով:
Եթե մագնիսը զգացվում է և տվյալները փոխվում են, «կոնտակտային մագնիսական» -ը դուրս է գալիս սերիական մոնիտոր:
դատարկ շրջան () {
if (digitalRead (HALL)) {Serial.println («կոնտակտային մագնիսական»); } ուշացում (100); }
Քայլ 12: Կոդավորման ալգորիթմ
*Ստեղծեք տրամաբանություն և կոդավորում ՝ սենսորային արժեքների հիման վրա Neopixels- ը վերահսկելու համար:
1. Տեղադրեք և վերբեռնեք ներքևի ծածկագիրը:
2. Նորմալ է, որ պատկերը պատշաճ կերպով չցուցադրվի, քանի որ շրջանակ չի արտադրվում: Բայց դուք կարող եք տեսնել, որ այն մոտավորապես աշխատում է:
3. Արագ հպեք և արձակեք Hall- ի տվիչն ու մագնիսը 1 վայրկյանի ընթացքում: Կրկնեք այս գործողությունը մոտ 10 անգամ:
4. Կոնֆիգուրացիան ամբողջական է, երբ Neopixels- ի գույները պարբերաբար փոխվում են:
#1 Ներառյալ վերնագրի ֆայլերը և նախամշակումը
Նախ, մենք պետք է հասկանանք, որ Arduino Mega- ի հիշողությունը բավականաչափ մեծ չէ պատկերի ֆայլ պահելու համար:
Հետևաբար, «avr/pgmspace» վերնագրի ֆայլը օգտագործվում է տարբեր հիշողության տարածք օգտագործելու համար:
Neopixels- ից օգտվելու համար օբյեկտը և կազմաձևը հայտարարում եք I/O PIN համար:
Պատկերի զանգվածը չափազանց մեծ է կոդավորման համար, այնպես որ ներբեռնեք և տեղադրեք կցված ֆայլերը:
#ներառում
#ներառել #սահմանել PIN 6 #սահմանել NUMPIXELS 30 #սահմանել HALL 2 Adafruit_NeoPixel շերտ = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); // տեղադրեք զանգվածը 'image_array_1.txt' // "'image_array_2.txt' //" 'image_array_3.txt' // "'image_array_4.txt'
#2 Գլոբալ փոփոխական և կարգավորում
Սահմանեք գլոբալ փոփոխական:
Հիմնական բանը պայծառությունը սահմանելն է, այն որոշում է արտադրանքի կյանքի ցիկլը:
int հաշվարկ = 0;
կրկնակի v = 0; կրկնակի last_v = 0; կրկնակի ժմչփ = micros (); կրկնակի ex_timer = micros (); կրկնակի last_timer = micros (); int deg = 36; int pix = 35; int rgb = 3; կրկնակի q_arr [2] = {0, 0}; int HALL_COUNT = 0; կրկնակի VELO; կրկնակի մշակման_հարցիչ = միկրո (); void setup () {strip.setBrightness (255); strip.begin (); strip.show (); Serial.begin (230400); }
#3 հիմնական հանգույց - պատկերի արտահայտման ելքային մաս
Այս ծածկագիրը պայմանական հայտարարություն է այն մասին, թե ինչպես կարելի է ելքավորել անիվի պտտման ժամանակը ըստ լուծման:
Այս մասը օգտագործում է հեծանիվի անիվը մեկ անգամ պտտելու ցիկլը որպես շատ կարևոր պարամետր:
Բացի այդ, կարևոր է կարդալ պատկերների զանգվածի տվյալները հիշողությունից:
դատարկ շրջան () {
եթե ((հաշվիչ (նախկին_տաչափ / 120.0) - (միկրոս () - վերամշակման ժամանակաչափ))) {ժմչփ = միկրո (); 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 (); } else if (VELO 264000) {for (int i = 0+5; i <pix; i ++) {strip.setPixelColor (i - 5, strip. Color (pgm_read_byte (& (image_2 [հաշվել] [1])), pgm_read_byte (& (image_2 [count] [2])), pgm_read_byte (& (image_2 [count] [0])))); } strip.show (); } else 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 (); } else if (VELO <= 204000) {for (int i = 0 + 5; i = 120)) {for (int i = 0 + 5; i <pix; i ++) {strip.setPixelColor (i - 5, շերտ. Գույն (0, 0, 0)); } strip.show (); }
#4 հիմնական հանգույց - մշակման և ցիկլի ժամանակի ստուգում և զգացում
Սա ամբողջ համակարգի ամենակարևոր մասն է:
Նախ, ստուգեք ամբողջ ծածկագիրը գործարկելու ժամանակը և մեկ ցիկլի համար կարգավորեք LED ելքային ժամանակը:
Ամեն անգամ, երբ անիվը պտտվում է, զգացվում է հաջորդ ցիկլի ժամանակը:
Արագացումը կարելի է գնահատել ՝ ժամանակի չափված ցիկլի ժամանակից հանելով վերջին չափված ցիկլի ժամանակը:
Համակարգը հաշվարկում է վերամշակման ժամանակը և արագացումը `հաշվարկելու համար, թե որքան ժամանակ LED- ները անընդհատ միանում են:
Process_timer = micros ();
եթե ((digitalRead (HALL) == HIGH) && (HALL_COUNT == 1)) {VELO = v; v = micros () - last_timer; ex_timer = q_arr [0] - q_arr [1] + v; last_timer = micros (); q_arr [0] = q_arr [1]; q_arr [1] = v; հաշվել = 0; HALL_COUNT = 0; } else if (digitalRead (HALL) == LOW) {HALL_COUNT = 1; }}
Քայլ 13: Usingրագրակազմի օգտագործումը
*Օգտագործեք ծրագրակազմ ՝ պատկերը փոխակերպելու և թափորի տվյալները կոդի մեջ տեղադրելու համար:
1. Պատկերը վերը նշված քայլից տեղադրեք պատրաստման փուլում տեղադրված R. C. P թղթապանակի պատկերի թղթապանակի մեջ:
- Ինչպես տեղադրել պատկերը հետևյալն է:- Վերանվանել # 1 ապրանքի 4 անիմացիոն պատկերներ `ըստ 1.png, 2.png, 3-p.webp
2. Գործարկեք Ver.5.exe ֆայլը:
3. Հաստատեք, որ 12 ֆայլ pro_1_code_1.txt դեպի pro_3_code_4.txt ստեղծվում են R. C. P պանակում:
4. Եթե այն ստեղծված չէ, փոխեք config.txt- ի բովանդակությունը որպես հետևյալ կազմաձևման ֆայլ:
5. Երբ ֆայլը ստեղծվի, պատճենեք ամբողջ բովանդակությունը ֆայլից pro_1_code_1.txt և տեղադրեք այն ստորև նշված կոդի մեջ ցուցադրվող մասի մեջ:
6. Ավելացրեք pro_1_code_2.txt, pro_1_code_3.txt և pro_1_code_4.txt բովանդակությունը նշված հատվածին 5 -րդ կարգով:
7. Անդրադառնալով 5 -ին և 6 -ին ՝ pro_2_code…, pro_3_code- ը նույն կերպ է լրացնում ծածկագիրը:
Քայլ 14: Ավարտեք
Ավարտեց POV- ի արտադրությունը, որը ստեղծում է մեկ պատկեր երեք անիվներով:
Խորհուրդ ենք տալիս:
Temերմաստիճանը միացրեք 3310 -ին Displayուցադրել գրաֆիկական եղանակը ՝ 5 քայլ
Temp Disply on 3310 Graուցադրել գրաֆիկական եղանակը. ԱՇԽԱՏԱՆՔ ԵՆ) 1X LM35 TEMP SENSOR1 X 10uf (Էլեկտրոլիտիկ կոնդենսատոր) ինչ -որ մետաղալար
MicroPython ծրագիր. Displayուցադրել շրջանակի չափը `9 քայլ
MicroPython ծրագիր. Displayուցադրել շրջանակի չափը. Այս փորձը օգտագործում է MakePython ESP8266 մոդուլը, որը թույլ է տալիս սովորել MicroPython ծրագրավորում ESP8266- ով: Փորձը վերահսկեց էկրանին գտնվող շրջանակի չափը `պտտելով պոտենցիոմետրը: Ընթացքում մենք կիմանանք մեր մասին
VISUINO Displayուցադրել Live Forex արժույթի գինը ինտերնետից ՝ 9 քայլ
VISUINO Liveուցադրել Live Forex արժույթի գինը ինտերնետից. Այս ձեռնարկում մենք կօգտագործենք NodeMCU Mini, OLED Lcd և Visuino ՝ ինտերնետից LCD- ից ինտերնետից մի քանի վայրկյան մեկ արտարժույթի գինը EUR/USD ցուցադրելու համար: Դիտեք ցուցադրական տեսանյութ
Displayուցադրել պրոցեսորի ժամանակը ESP Wemos D1 OLED- ում ՝ 7 քայլ
Displayուցադրել պրոցեսորի ժամանակը ESP Wemos D1 OLED- ում. Այս ձեռնարկում մենք կօգտագործենք ESP Wemos D1 OLED և Visuino ՝ պրոցեսորի ժամանակը OLED էկրանին ցուցադրելու համար: Դիտեք ցուցադրական տեսանյութ
Գրաֆիկական թեստ ILI9341 TFT LCD SPI Displayուցադրել ՝ 6 քայլ
Գրաֆիկական թեստ ILI9341 TFT LCD SPI էկրան. 2.8 դյույմանոց SPI TFT- ի միացում, որն ունի ILI9341 չիպ Arduino Uno- ին: