Բովանդակություն:
- Պարագաներ
- Քայլ 1: Շղթայի կառուցում
- Քայլ 2: Էլեկտրամոնտաժ և տեղադրում
- Քայլ 3: Կոդ
- Քայլ 4: Արդյունքներ
Video: DIY Givi V56 Մոտոցիկլետի Topbox Light Kit ինտեգրված ազդանշաններով. 4 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Որպես մոտոցիկլետ վարող, ես բոլորովին ծանոթ եմ ինձ հետ վարվելուն, ինչպես ճանապարհին անտեսանելի լինելուն: Մի բան, որ ես միշտ ավելացնում եմ հեծանիվներիս, վերին տուփն է, որը սովորաբար ունի ինտեգրված լույս: Վերջերս ես նոր հեծանիվ փոխեցի և գնեցի Givi V56 Monokey տուփը, քանի որ այն շատ տեղ ուներ իրերի համար: Այս տուփը ունի գործարանային լույսի հավաքածուի տեղ, որը բաղկացած է յուրաքանչյուր կողմի համար LED- ների երկու շերտից: Խնդիրն այն է, որ այս հավաքածուն մոտ 70 դոլար է և միայն արգելակներ է անում: Գոյություն ունի հետվաճառքի հավաքածու, որը հավանաբար նմանատիպ բաներ է անում և մի փոքր ավելի հեշտ է տեղադրել, բայց ձեր գինը բարձրանում է մինչև $ 150: Լինելով հնարամիտ մարդ և փնտրելով պատրվակ ՝ հասցեավորվող LED շերտերը փորձելու համար, ես որոշեցի ստեղծել ինտեգրված համակարգ, որն ունենալու էր ոչ միայն արգելակների լույսեր, այլև լուսարձակներ (միացնելիս, երբ շարժվում էին), շրջադարձային ազդանշաններ և վտանգի լույսեր: Ի վերջո, ես նույնիսկ սկսնակ հաջորդականություն ավելացրեցի…: որովհետև կարող էի: Նկատի ունեցեք, որ սա շատ աշխատանք էր պահանջում, չնայած որ ես շատ բան ունեի պարզելու: Չնայած աշխատանքին, ես բավականին գոհ եմ, թե ինչպես ստացվեց: Հուսանք, որ սա օգտակար կլինի ուրիշի համար:
Այս համակարգի աշխատանքի հիմնական գործառույթն այն է, որ Arduino միավորը ազդանշաններ է փնտրում կապում ՝ արգելակի լույս, ձախ շրջադարձի լույս և աջ շրջադարձի լույս: Մոտոցիկլետից 12 վոլտ ազդանշան կարդալու համար ես օպտոիզոլատորներ օգտագործեցի ՝ 12 Վ ազդանշանը փոխակերպելու 5 Վ ազդանշանի, որը կարող է կարդալ Արդուինոն: Այնուհետև ծածկագիրը սպասում է այս ազդանշաններից մեկին, այնուհետև հրամանները դուրս է բերում LED շերտի միջոցով ՝ օգտագործելով FastLED գրադարանը: Դա հիմքն է, հիմա մանրամասներին ծանոթանալու համար:
Պարագաներ
Սրանք այն բաներն են, որոնք ես օգտագործում էի, քանի որ մեծ մասամբ դրանք արդեն ունեի պառկած: Ակնհայտ է, որ դրանք կարող են փոխանակվել ըստ անհրաժեշտության.
- Arduino - Ես չափանիշների համար օգտագործել եմ նանո, բայց դուք կարող եք օգտագործել այն, ինչ զգում եք, քանի դեռ ունեք հինգ կապում օգտագործելու համար:
- 5V կարգավորիչ - ես օգտագործեցի L7805CV, որն ունակ էր 1.5 ամպեր: Այս նախագիծը կօգտագործի 0.72 ամպեր LED- ների համար գումարած էներգիան նանոյի համար, ուստի 1.5 -ը հիանալի է աշխատում այս նախագծի համար:
- Կոնդենսատորներ - լարման կարգավորիչը ճիշտ աշխատելու համար ձեզ հարկավոր կլինի մեկ 0.33 uF և մեկ 0.1 uF:
- 3x օպտոիզոլատորներ - ազդանշանի փոխակերպումը կատարելու համար 12 Վ -ից 5 Վ: Ես օգտագործեցի PC817X տիպը, որն ունի ընդամենը չորս կապում, ինչը մեզ անհրաժեշտ է:
- Ռեզիստորներ - ձեզ հարկավոր կլինի երկու տեսակ ՝ յուրաքանչյուրից երեքը: Առաջինը պետք է բավական լինի, որպեսզի հոսանքը նվազեցնի օպտոիզոլատոր IR LED- ի միջոցով: Ձեզ անհրաժեշտ կլինի առնվազն 600 օհմ, բայց 700 -ը ավելի լավ գաղափար կլինի մոտոցիկլետի փոփոխվող լարումները կարգավորելու համար: Մյուսը պետք է լինի 10k- ից մինչև 20k- ի միջև, օպտոիզոլատորի մյուս կողմում արագ ազդանշանի համար:
- Նախատիպ տախտակ - Ես ունեի մի քանիսը, որոնք բավական փոքր էին, որպեսզի տեղավորվեին փոքր նախագծային տուփի մեջ ՝ փոքր քանակությամբ զարդարանքով:
- Նախագծի տուփ - բավականաչափ մեծ ՝ բաղադրիչներին տեղավորելու համար, բայց բավական փոքր ՝ հեշտ տեղավորվելու համար:
- Հաղորդալար - Ես օգտագործել եմ Cat 6 ethernet մետաղալարը, քանի որ դրա շուրջը շատ բան ունեի: Սա ունի ութ մետաղալարեր ՝ ամբողջ գույնով ծածկված, որոնք օգնել են բոլոր տարբեր կապերին և բավականաչափ մեծ չափիչ էր ընթացիկ խաղարկությունները կարգավորելու համար:
- Խրոցակներ - ցանկացած վայրում, որտեղ ցանկանում եք, որ համակարգը հեշտությամբ շարժական լինի: Ես անջրանցիկ խրոցակի օգնությամբ թույլ տվեցի վերին տուփը հեռացնել, ինչպես նաև անձրևը կամ ջուրը: Ինձ նաև LED խցանների համար ավելի փոքր խրոցակներ էին պետք, որպեսզի ես ստիպված չլինեի մեծ անցքեր փորել:
- Կպչուն կապեր և սոսինձ ամրացնող ամրակներ `ամեն ինչ տեղում պահելու համար:
- Փոքրացրեք փաթեթավորումը `միացումները կարգավորելու համար:
Քայլ 1: Շղթայի կառուցում
Ակնհայտ է, որ եթե դուք հետևում եք իմ կառուցվածքին, ստիպված չեք լինի անցնել իմ կատարած թեստերի քանակը: Առաջին բանը, որ ես արեցի, համոզվելն էր, որ իմ կոդը աշխատում է, և որ ես կարող եմ պատշաճ կերպով ազդանշան ստանալ օպտոիզոլատորներից, ինչպես նաև ճիշտ վերահսկել LED շերտերը: Մի պահ պահանջվեց պարզելու համար, թե ինչպես լավագույնս ազդանշանային կապումներն ամրացնել մեկուսարաններին, սակայն փորձության և սխալի միջոցով ես գտա ճիշտ կողմնորոշումը: Ես պարզապես օգտագործեցի ստանդարտ նախատիպի տախտակ, քանի որ ես կառուցում էի միայն մեկը, և հետագծման օրինակը պարզելը ավելի շատ ժամանակ կպահանջեր, քան արժեր: Տախտակի վերին հատվածը հիանալի տեսք ունի, բայց ներքևի մասը կարծես մի փոքր խառնաշփոթ է, բայց գոնե այն ֆունկցիոնալ է:
Հիմնական դիզայնը սկսվում է անջատված աղբյուրից 12 Վ լարման մուտքագրմամբ (լար, որը միացված է միայն մոտոցիկլետը միացված վիճակում): Էլեկտրագծերի դիագրամը իսկապես կարող է օգնել գտնել այս մետաղալարը: Սա սնվում է լարման կարգավորիչի մի կողմից: 0.33 uF կոնդենսատորը այս մուտքը կապում է գետնին լարման կարգավորիչի հետ, որն այնուհետև հետադարձվում է մոտոցիկլետի գետնին: Լարման կարգավորիչի ելքը կունենա 0.1uF կոնդենսատոր, որը կապված է դրա հետ գետնին: Այս կոնդենսատորներն օգնում են հարթել լարումը կարգավորիչից: Եթե դրանք չեք գտնում տպատախտակի նկարում, դրանք գտնվում են լարման կարգավորիչի տակ: Այնտեղից 5V գիծը անցնում է Arduino- ի Vin- ին, հոսանքի քորոցին, որը սնուցելու է LED շերտերը, և երկուսը `օպտոիզոլատոր աղբյուրի աղբյուրը, որը սնվելու է Arduino- ի կապում` ապահովելով անհրաժեշտ 5V ազդանշանը:
Ինչ վերաբերում է օպտոիզոլատորներին, ապա դրանք երկու կողմ են `մեկը IR LED- ով, իսկ մյուսը` տրանզիստորով և IR դետեկտորով: Մենք ցանկանում ենք օգտագործել IR LED կողմը `12V ազդանշանը չափելու համար: Քանի որ LED- ն ունի 1,2 Վ առաջ լարման, մեզ հարկավոր է ընթացիկ սահմանափակող դիմադրություն ՝ անընդմեջ: 12V - 1.2V = 10.8V և LED- ը 18 մԱ -ով գործարկելու համար (ես միշտ սիրում եմ 20 մԱ -ից պակաս աշխատել կյանքի պատճառներով) ձեզ հարկավոր կլինի R = 10.8V/0.018A = 600 օմ դիմադրություն: Տրանսպորտային միջոցների լարումները նույնպես հակված են ավելի բարձր աշխատելու, պոտենցիալ մինչև 14 Վ, ուստի ավելի լավ է պլանավորել դրա համար, որը կազմում է մոտ 710 օհմ, չնայած 700 -ը ավելի քան ողջամիտ կլինի: LED- ի կողմի ելքը այնուհետև հետադարձվում է գետնին: Օպտոիզոլատորի ելքային կողմի համար մուտքը կօգտագործի կարգավորիչի 5 Վ ազդանշանը, այնուհետև ելքը միանալու է մեկ այլ դիմադրության `նախքան գետնին գնալը: Այս դիմադրիչը պարզապես պետք է լինի մոտ 10k - 20k ohm, համենայն դեպս, դա ցույց տվեց իմ տվյալների թերթիկը: Սա թույլ կտա ազդանշանի արագ չափում, քանի որ մենք գործ չունենք աղմկոտ միջավայրի հետ: Arduino- ի քորոցին ելքը դուրս կգա ռեզիստորի և օպտոիզոլատորի ելքի միջև, այնպես որ երբ ազդանշանն անջատված է, քորոցը ցածր է, և երբ ազդանշանը կապում է բարձր:
LED շերտի լույսերն ունեն դրանց հետ կապված երեք լար ՝ ուժ, հող և տվյալներ: Հզորությունը պետք է լինի 5 Վ: Այս նախագիծը օգտագործում է ընդամենը 12 LED (չնայած ես ավելի շատ LEDS ունեմ շերտերի վրա, բայց ես օգտագործում եմ միայն յուրաքանչյուր երրորդ LED) և յուրաքանչյուրը տևում է 60mA, երբ սպիտակ լույսն օգտագործվում է ամբողջ պայծառությամբ: Սա ընդհանուր առմամբ տալիս է 720 մԱ: Մենք լավ ենք լարման կարգավորիչի ելքային հզորության սահմաններում, այնպես որ մենք լավ ենք: Պարզապես համոզվեք, որ մետաղալարն այնքան մեծ չափիչ է, որ կարող է կառավարել հոսանքը, ես օգտագործել եմ 24 չափիչ Cat 6 էթերնեթ մետաղալար: Ethernet մետաղալարն այն էր, ինչ ես նստած էի, և այն ունի 8 գունավոր կոդավորված լարեր, այնպես որ այն լավ աշխատեց այս նախագծի համար: Միակ լարերը, որոնք այնուհետև պետք է անցնեն վերին արկղ, ուժն ու հողն են (որոնք երկուսն էլ բաժանվում են շերտերի միջև) և երկու տվյալների տող (մեկը յուրաքանչյուր շերտի համար):
Մնացած էլեկտրագծերը միանում են arduino- ի կապումներին և սնուցում են այն ուժով: Այս նախագծի համար օգտագործված քորոցները հետևյալն էին.
- Vin - միացված է 5V
- Gnd - միացված է գետնին
- Pin2 - միացված է ձախ շերտի տվյալների գծին
- Pin3 - միացված է աջ շերտի տվյալների գծին
- Pin4 - միացված է արգելակման ազդանշանին օպտոիզոլատորից
- Pin5 - միացված է ձախ շրջադարձի ազդանշանին օպտոիզոլատորից
- Pin6 - միացված է աջ շրջադարձի ազդանշանին օպտոիզոլատորից
Քայլ 2: Էլեկտրամոնտաժ և տեղադրում
Շղթայի կառուցվելուց հետո գալիս է ժամանակը, ըստ էության, այն միացնելու տեղը: Օգտագործելով ձեր հեծանիվի էլեկտրագծերի սխեման, ձեզ հարկավոր է գտնել հետևյալը.
- Անջատված սնուցման աղբյուր
- Գետնին
- Արգելակի ազդանշան
- Ձախ շրջադարձի ազդանշան մուտքագրված է
- Աջ շրջադարձի ազդանշան
Իմի համար կար մի վարդակ, որի վրա կար այս ամենը, այնպես որ ես պարզապես դա օգտագործեցի: Բավական ժամանակ ունենալով, ես գուցե կարողանայի գտնել միակցիչի նույն ոճը և պարզապես միացնել մոդուլը, բայց ես դա չարեցի, այնպես որ ես տեղ -տեղ հեռացրեցի մեկուսացումը և նոր մետաղալարը կպցրի դրան: Այս խճճված միացումների վրա ես օգտագործում էի խրոցակներ, որպեսզի հետագայում կարողանամ հեռացնել մնացածը: Այնտեղից ես տեղադրեցի Arduino- ն, որն այժմ փակ նախագծային տուփի մեջ է, այն նստատեղի տակ, որտեղ այն ամրացրել էի: Այնուհետև ելքային մալուխը դարակաշարերի շրջանակով անցնում է անջրանցիկ խրոցակով, այնուհետև մտնում է տուփը և հետևի երկայնքով անցնում դեպի կափարիչը, որտեղ այն պառակտվում է յուրաքանչյուր կողմի համար: Հաղորդալարերը անցնում են կափարիչի ներսից այն կետով, որտեղ գտնվում են LED- ների միացումները: Հաղորդալարն օգնում է տեղում օգտագործել արտաքին կապի ամրակապերը, որոնք ամրացված են սոսնձվող պատյանով: Դուք կարող եք դրանք գտնել տան բարեկարգման խանութի մալուխների տեղադրման բաժնում
Ես օգտագործել եմ երկու մինի JST խրոցակներ LED շերտերի վրա, քանի որ ինձ անհրաժեշտ էր բավականաչափ փոքր խրոց ՝ նվազագույն տրամագծի անցքով անցնելու համար, և քանի որ ցանկանում էի համոզվել, որ բավականաչափ մետաղալար կա ընթացիկ պահանջները կարգավորելու համար: Կրկին, գուցե դա չափազանց մեծ էր, և ես չունեի ոչ մի փոքր մոմ, որի ձեռքին երեք լարեր էին: Տուփի անցքը, որի համար պետք է անցնեն լուսարձակման լարերը, կնքվել են, որպեսզի ջուրը չմնա: Ինչ վերաբերում է LED շերտերի տեղադրմանը, քանի որ դրանց միջև փոքր անհամապատասխանություն կա (ռեֆլեկտորի և լուսադիոդների անցքերի միջև եղած տարածության միջև եղավ մոտ 1 - 1.5 մմ տարբերություն), ես դրանք տեղադրեցի այնպես, որ դրանք բաժանեն LED- ի և հնարավորինս փոսը: Այնուհետև ես տաք սոսինձ օգտագործեցի դրանք տեղում ամրացնելու համար, իսկ հերմետիկով `տարածքն ամբողջությամբ կնքելու համար: LED շերտերն իրենք են անջրանցիկ, ուստի թաց լինելու դեպքում խնդիր չկա: Չնայած թվում է, որ տեղադրումը շատ բան է թվում, դա ավելի հեշտ է դարձնում համակարգը ապագայում հեռացնելը կամ մասերի փոխարինումը, քանի որ դա կարող է տեղի ունենալ:
Քայլ 3: Կոդ
Իմ աղբյուրի կոդը պետք է լինի այս Հրահանգի սկզբում: Ես միշտ ծանր եմ մեկնաբանում իմ կոդը, որպեսզի հետագայում ավելի հեշտ լինի հասկանալ: Հրաժարում. Ես պրոֆեսիոնալ ծածկագիր չեմ: Կոդը գրվել է այնպիսի մեթոդով, որն ավելի հեշտ էր սկզբում գործարկել և որոշ բարելավումներ կատարվեցին, բայց ես գիտեմ, որ այն կարող է ավելի կատարելագործվել: Ես նաև օգտագործում եմ հետաձգման () ֆունկցիայի մեծ քանակ ՝ ժամանակի համար, որն այնքան էլ իդեալական չէ: Այնուամենայնիվ, ազդանշանները, որոնք ընդունում է միավորը, համեմատած արագ ազդանշանների հետ չեն, ուստի ես դեռ արդարացված էի զգում դրանք միլիս () օգտագործելու պատճառով: Ես նաև շատ զբաղված հայր և ամուսին եմ, ուստի ժամանակ ծախսելը `ինչ -որ բան բարելավելու համար, որն ի վերջո չի փոխի գործառույթը, ցուցակում բարձր չէ:
Այս նախագծի համար պահանջվում է միայն մեկ գրադարան, որը FastLED գրադարանն է: Սա ունի WS2811/WS2812B տիպի LED շերտերի վերահսկման ամբողջ ծածկագիրը: Այնտեղից ես կանդրադառնամ այն հիմնական գործառույթներին, որոնք կօգտագործվեն:
Ստանդարտ սահմանումներից բացի, առաջինը ձեր երկու շերտերի հայտարարումն է: Յուրաքանչյուր շերտի համար դուք կօգտագործեք հետևյալ ծածկագիրը.
FastLED.addLeds (leds [0], NUM_LEDS);
Այս ծածկագրի տողում տեղադրվում է Pin 2 -ը, որը սահմանում է այս ժապավենը 0 -ով `NUM_LEDS հաստատունով սահմանված LED- ների քանակով, որը իմ դեպքում սահմանվում է 16. Եթե երկրորդ շերտը սահմանելու համար, 2 -ը կդառնա 3 (pin3- ի համար) և շերտը կպիտակավորվի շերտ 1:
Հաջորդ տողը, որը կարևոր կլինի, գույնի սահմանումն է:
leds [0] [1] = Գույնի_բարձր CRGB (r, g, b);
Կոդի այս տողը օգտագործվում է չնայած տարբեր տեսքներով (իմ մեծ մասը հաստատուն է օգտագործում): Հիմնականում այս ծածկագիրը յուրաքանչյուր LED (կարմիր, կանաչ, կապույտ) ալիք է ուղարկում մի արժեք, որը սահմանում է յուրաքանչյուր պայծառություն: Պայծառության արժեքը կարող է սահմանվել 0 - 255 թվով: Փոխելով յուրաքանչյուր ալիքի պայծառության մակարդակը, կարող եք սահմանել տարբեր գույներ: Այս նախագծի համար ես ուզում եմ, որ սպիտակ գույնը լույսը հնարավորինս պայծառ պահի: Այսպիսով, միակ փոփոխությունը, որ ես անում եմ, այն է, որ պայծառության մակարդակը նույնը դնեմ բոլոր երեք ալիքների վրա:
Կոդի հաջորդ փաթեթը օգտագործվում է յուրաքանչյուր լույս անհատապես լուսավորելու համար: Ուշադրություն դարձրեք, որ յուրաքանչյուր շերտի համար յուրաքանչյուր LED ունի հասցե, որը սկսվում է 0 -ից ՝ տվյալների գծի ամենամոտ միացման համար, մինչև ձեր ամենաբարձր թվով LED- ի մինուս 1. Օրինակ, սրանք 16 LED շերտեր են, ուստի ամենաբարձրը 16 - 1 = 15. Դրա պատճառն այն է, որ առաջին LED- ն ունի 0 պիտակ:
for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Սա կփոխի յուրաքանչյուր երրորդ LED- ի լույսը ՝ անցնելով վերջինից առաջինին: leds [0] = Գույնի ցածր; // Ընտրված գույնին սահմանեք ժապավեն 0 LED գույնը: leds [1] = Գույնի ցածր; // Ընտրված գույնին սահմանեք շերտի 1 LED գույնը: FastLED.show (); // Showույց տալ սահմանված գույները: leds [0] = CRGB:: Սև; // Անջատեք հաջորդ գույնի նախապատրաստման նախնական գույնը: leds [1] = CRGB:: Սև; ուշացում (150); } FastLED.show (); // Showույց տալ սահմանված գույները:
Այս ծածկագրի գործիքն այն է, որ փոփոխականը (i) օգտագործվում է for loop- ի շրջանակում որպես LED հասցե, որն այնուհետև հղվում է LED- ների ամբողջական թվին (NUM_LEDS): Դրա պատճառն այն է, որ ես ուզում եմ, որ լույսերը սկսվեն ոչ թե սկզբից, այլ շերտի վերջում: Կարգավորումը թողարկվում է երկու շերտերի վրա (leds [0] և leds [1]), այնուհետև տրվում է փոփոխություն ցույց տալու հրաման: Դրանից հետո այս լույսն անջատվում է (CRGB:: Սև), և հաջորդ լույսը վառվում է: Սև հղումը հատուկ գույն է FastLED գրադարանում, այնպես որ ես ստիպված չեմ թողարկել 0, 0, 0 յուրաքանչյուր ալիքի համար, չնայած նրանք նույնը կանեին: For For հանգույցը միաժամանակ առաջացնում է 3 LED (i = i-3), քանի որ ես օգտագործում եմ միայն մյուս LED- ները: Այս հանգույցի ավարտին լուսային հաջորդականությունը կանցնի մեկ LED- ից մյուսը ՝ միայն մեկ լուսավորությամբ մեկ շերտով, ինչ -որ կերպ ասպետի հեծյալի էֆեկտ: Եթե ցանկանում եք լուսավորել յուրաքանչյուր լույս այնպես, որ բարը կառուցվի, ապա պարզապես կհեռացնեք LED- ները անջատող տողերը, ինչը տեղի է ունենում ծրագրի հաջորդ ծածկագրում:
for (int i = 0; i <dim; i ++) {// Արագ մարեք լույսերը մինչև ընթացիկ լուսավորության մակարդակը: rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Սա կլուսավորի դիրքի լույսի վերջին երեք լույսերը: leds [0] = CRGB (rt, gt, bt); // Ընտրված գույնին սահմանեք ժապավեն 0 LED գույնը: leds [1] = CRGB (rt, gt, bt); // Ընտրված գույնին սահմանեք շերտի 1 LED գույնը: } FastLED.show (); ուշացում (3); }
Կոդի վերջին օրինակը, որը ես օգտագործում եմ LED- ների համար, մարված օղակն է: Այստեղ ես օգտագործում եմ ժամանակավոր անցքեր յուրաքանչյուր ալիքի պայծառության համար (rt, gt, bt) և դրանք ավելացնում եմ 1 -ով ՝ յուրաքանչյուր ցուցադրման միջև ուշացումով ՝ իմ ուզած տեսքին հասնելու համար: Նաև նշեք, որ այս ծածկագիրը փոխում է միայն վերջին երեք LED- ները, քանի որ այն մարում է լուսարձակող լույսերում, այնպես որ ես սկսում եմ ոչ թե 0 -ից, այլ 9 -ից:
Մնացած LED ծածկագիրը դրանց կրկնություններն են: Մնացած ամեն ինչ կենտրոնացած է երեք տարբեր լարերի վրա ազդանշան փնտրելու վրա: Կոդի Loop () հատվածը փնտրում է արգելակային լուսարձակներ, որոնք այն կթարթվի մեկ անգամ ՝ միանալուց առաջ (սա ցանկության դեպքում կարգավորելի է) կամ շրջադարձային ազդանշաններ փնտրելիս: Այս ծածկագրի համար, քանի որ ես չէի կարող ենթադրել, որ ձախ և աջ շրջադարձի լույսերը միանգամից կվառվեն վտանգների դեպքում, ես առաջինը փնտրում եմ մեկը, այնուհետև մի փոքր ուշացումից հետո ես ստուգում եմ, թե երկուսն էլ ցույց են տալիս վտանգի լույսերը միացված են: Մի բարդ բան, որ ես ունեի, շրջադարձային ազդանշաններն էին, որովհետև լույսը որոշ ժամանակով կմարեր, ուստի ինչպե՞ս տարբերել դեռևս միացված, բայց անջատված և չեղյալ հայտարարված ազդանշանի միջև տարբերությունը: Այն, ինչ ես հանգեցի, իրականացնում էր հետաձգման օղակ, որը նախատեսվում է շարունակել ավելի երկար, քան ազդանշանի բռնկումների միջև եղած ուշացումը: Եթե շրջադարձային ազդանշանը դեռ միացված է, ապա ազդանշանային օղակը կշարունակվի: Եթե ազդանշանը չի միանում հետաձգման ավարտից հետո, ապա այն վերադառնում է օղակի սկզբին (): Հետաձգման տևողությունը կարգավորելու համար փոխեք մշտական լույսի համարը: Հետաձգումը հիշում է յուրաքանչյուր 1 լույսի համար Հետաձգումը փոխվում է 100 ms- ով:
while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } ուշացում (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Սա կփոխի յուրաքանչյուր երրորդ LED- ի լույսը ՝ անցնելով վերջինից առաջինին: leds [0] = CRGB (0, 0, 0); // Ընտրված գույնին սահմանեք ժապավեն 0 LED գույնը: } for (int i = 9; i <NUM_LEDS; i = i +3) {// Սա կտեղադրի վազող լուսարձակներ, որոնք օգտագործում են միայն վերջին երեքը: leds [0] = Color_low; // Ընտրված գույնին սահմանեք ժապավեն 0 LED գույնը: } FastLED.show (); // Ելքային կարգավորումները վերադարձվում են; // Երբ շրջադարձային ազդանշանն այլևս միացված չէ, վերադարձեք հանգույց: }
Հուսանք, որ մնացած ծածկագիրը ինքնին բացատրելի է: Դա պարզապես ազդանշանների ստուգման և գործողությունների կրկնվող շարք է:
Քայլ 4: Արդյունքներ
Amazingարմանալի մասն այն էր, որ այս համակարգը աշխատեց առաջին անգամ, երբ այն միացրեցի հեծանիվին: Հիմա, ճիշտն ասած, ես մինչ այդ այն շատ էի փորձարկել նստարանին, բայց ես դեռ սպասում էի, որ խնդիր կամ շտկում կունենամ: Ստացվում է, որ ես կարիք չունեի կոդի, ինչպես նաև միացումների ճշգրտումներ կատարելու: Ինչպես տեսնում եք տեսանյութում, համակարգը անցնում է գործարկման հաջորդականությամբ (որը պարտադիր չէ, որ ունենաք), այնուհետև լռելյայնորեն դառնում է լուսարձակներ: Դրանից հետո այն փնտրում է արգելակները, որի դեպքում բոլոր լուսադիոդային լուսարձակները կլուսավորի մինչև լիարժեք պայծառություն և դրանք կթափանցի մեկ անգամ, մինչև դրանք միացված մնան, մինչև որ արգելակները արձակվեն: Երբ օգտագործվում է շրջադարձային ազդանշանը, ես ոլորման էֆեկտ ստեղծեցի այն կողմի համար, որի շրջադարձը նշված է, իսկ մյուս կողմը կլինի կամ լուսարձակներ կամ արգելակի լույս, եթե միացված է: Վտանգավոր լույսերը ժամանակին կթարթեն մյուս լույսերի հետ միասին:
Հուսով եմ, որ այս լրացուցիչ լույսերով ես ավելի տեսանելի կլինեմ այլ մարդկանց համար: Առնվազն, դա հաճելի հավելում է `իմ տուփը մի փոքր ավելի առանձնացնելու համար, քան մյուսները` կոմունալ ծառայություններ մատուցելիս: Հուսով եմ, որ այս նախագիծը օգտակար կլինի մեկ ուրիշի համար, նույնիսկ եթե նա չի աշխատում մոտոցիկլետի տուփի լուսավորությամբ: Շնորհակալություն
Խորհուրդ ենք տալիս:
Մոտոցիկլետի պոչի լամպ `ծրագրավորված LED- ների օգնությամբ` ինտեգրված փակագծերով: 4 քայլ
Մոտոցիկլետի պոչ լամպ `ծրագրավորվող LED- ների օգնությամբ ինտեգրված թարթիչներով. . Լույսի 4 ռեժիմ կա
Raspberry Pi մոտոցիկլետի վահանակ. 9 քայլ (նկարներով)
Raspberry Pi Motorcycle Dashboard: Որպես ուսանող Մուլտիմեդիա & Հաղորդակցության տեխնոլոգիան Howest Kortrijk- ում ես ստիպված էի կատարել իմ IoT նախագիծը: Սա կհամատեղի առաջին տարում հետևած բոլոր մոդուլները մեկ մեծ նախագծի մեջ: Քանի որ ազատ ժամանակ շատ եմ մոտոցիկլետ վարում
Ինչպես կառուցել DIY ավտոմատ բույսերի ջրման համակարգ WiFi ազդանշաններով. 15 քայլ
Ինչպես կառուցել DIY ավտոմատ բույսերի ջրման համակարգ WiFi ազդանշաններով. Սա ավարտված նախագիծ է, DIY ավտոմատ բույսերի ջրման համակարգ, որը վերահսկվում է #WiFi- ի միջոցով: Այս նախագծի համար մենք օգտագործեցինք Self Watering Automatic Garden System Subassembly Kit- ը Adosia- ից: Այս կարգավորումը օգտագործում է էլեկտրամագնիսական ջրի փականներ և անալոգային հողի խոնավություն
Կառուցեք մինի DIY հիդրոպոնիկ համակարգեր և DIY հիդրոպոնիկ խոտաբույսերի այգի WiFi ազդանշաններով. 18 քայլ
Կառուցեք Mini DIY Hydroponic Systems & DIY Hydroponic Herb Garden WiFi ազդանշաններով. Այս ձեռնարկում մենք ձեզ ցույց կտանք, թե ինչպես կառուցել #DIY #հիդրոպոնիկա համակարգ: Այս DIY հիդրոպոնիկ համակարգը ջրելու է սովորական հիդրոպոնիկ ոռոգման ցիկլով ՝ 2 րոպե միացված և 4 րոպե անջատումով: Այն նաև վերահսկելու է ջրամբարի ջրի մակարդակը: Այս համակարգը
Մնացեք ապահով ՝ օգտագործելով այս հեծանիվը շրջադարձային ազդանշաններով. 5 քայլ (նկարներով)
Եղեք անվտանգ ՝ օգտագործելով այս հեծանիվը շրջադարձային ազդանշաններով. Ես սիրում եմ հեծանիվ վարել, սովորաբար այն օգտագործում եմ դպրոց հասնելու համար: Ձմռանը, ամենից հաճախ դրսում դեռ մութ է, և այլ մեքենաների համար դժվար է տեսնել իմ ձեռքի շրջադարձի ազդանշանները: Հետևաբար, դա մեծ վտանգ է, քանի որ բեռնատարները կարող են չտեսնել, որ ես ուզում եմ