Բովանդակություն:
- Քայլ 1: Այս նախագծում օգտագործվող բաները
- Քայլ 2: Սարքաշարի միացում
- Քայլ 3: Softwareրագրային ապահովման ծրագրավորում
- Քայլ 4: Գործողություն
Video: Սուրբ Christmasննդյան երաժշտություն Ուրախ լույս. 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Շնորհավոր Սուրբ Ծնունդ! Անկանու՞մ եք ունենալ տոնածառ, որը կարող է շփվել ձեզ հետ:
Քայլ 1: Այս նախագծում օգտագործվող բաները
Սարքավորման բաղադրիչներ
- Seeeduino V4.2
- Base Shield V2
- Grove - կարգավորելի PIR շարժման ցուցիչ
- Grove - Բարձրության սենսոր
- Grove - WS2813 RGB LED Strip Անջրանցիկ - 60 LED/մ - 1 մ
Softwareրագրային ապահովման ծրագրեր և առցանց ծառայություններ
Arduino IDE
Քայլ 2: Սարքաշարի միացում
Միացրեք PIR տվիչը, բարձրության տվիչը և LED ժապավենը Base Shield- ի D2, A0 և D6 նավահանգստին առանձին: Միացրեք Base Shield- ը Seeduino- ին, ամեն ինչ արված է:
Քայլ 3: Softwareրագրային ապահովման ծրագրավորում
Followingրագրավորումից առաջ անհրաժեշտ է տեղադրել ներքևում գտնվող գրադարանները: Խնդրում ենք դրանք ներբեռնել և ձեռքով ներմուծել ձեր Arduino IDE:
- Led_Strip
- MsTimer2
- Arduino_Vector
Կոդը ավելի հակիրճ դարձնելու համար մենք փաթեթավորել ենք այն: CheerLight դասը այս ծրագրի կիրառման դասն է:
դասի կիրառում:: CheerLight
: public application:: interface:: IApplication {public: void setup (void); դատարկ հանգույց (դատարկ); անվավեր setPIRSensorPin (uint8_t pin); void setLoudnessSensorPin (uint8_t քորոց); դատարկությունՍենսորներ (անվավեր); void changeAnimation (դատարկ * args); void changeSpeed (դատարկ * args); void changeColor (դատարկ * args); ստատիկ կիրառում:: CheerLight * getInstance (անվավեր); պաշտպանված ՝ վարորդ:: LEDStrip _ledStrip; վարորդ:: PIRSensor _pirSensor; վարորդ:: LoudnessSensor _loudnessSensor; uint8_t _իմիմացիա; middleware:: Delegate _detectedDelegate; middleware:: Delegate _absoluteLoudnessDelegate; middleware:: Delegate _relativeLoudnessDelegate; CheerLight (անվավեր); ստատիկ կիրառում:: CheerLight _instance; };
CheerLight դասը նախագծվել է Singleton Patterns- ի կողմից, ինչը նշանակում է, որ դրա համար կա միայն մեկ օրինակ, այդ օրինակին կարող եք զանգահարել CheerLight:: getInstance (): Եթե ձեր Սենսորների կապը տարբերվում է Hardware Connection- ից, կարող եք դրանք փոխել ՝ զանգահարելով setPIRSensorPin () և setLoudnessSensorPin () մեթոդներին:
Մենք խորհուրդ ենք տալիս timeSensors () մեթոդը ժամանակաչափի մեջ դնել `սենսորները ժամանակին չափելու համար, սակայն ձեռքով զանգահարել changeAnimation (), changeSpeed () կամ changeColor () մեթոդներին: Երբ սենսորները չափվեն, դրանք կզանգահարվեն պատվիրակների միջոցով:
Ի՞նչ է պատվիրակը:
Ինչպես բոլորս գիտենք, մենք կարող ենք հայտարարել ֆունկցիայի ցուցիչ և այն մատնանշել C- ում գործառույթի վրա.
դատարկ func1 (դատարկ);
դատարկ (*pFunc) (դատարկ) = func1;
և օգտագործել այն `նշելու այն գործառույթը, որին մատնանշել է
pFunc ();
Բայց կան տարբերություններ C ++ - ում, եթե փորձեք կազմել ներքևում նշված կոդը.
դաս A {
հրապարակային ՝ void func1 (void); }; դատարկ (*pFunc) (դատարկ) = & A:: func1;
կազմողը կհաղորդի տիպի փոխակերպման սխալի մասին, ահա ճիշտ օրինակը.
դատարկ (A::*pFunc) (դատարկ) = & A:: func1;
Երբ փորձում ենք օգտագործել այն այդ մեթոդը կանչելու համար, նորից սխալ: Այդ սխալի պատճառն այն է, որ օբյեկտ-մեթոդը պետք է կոչվի օբյեկտի կողմից: Այսպիսով, մենք ստեղծում ենք մի օբյեկտ, որը կոչում ենք այն.
Ա ա;
ա.*pFunc ();
Այս անգամ խնդիր չկա: Այսպիսով, Delegate.h- ում կա Delegate դասարան:
կաղապար
class middleware:: Delegate: public middleware:: interface:: IDelegate {public: Delegate (T *object, void (T:: *method) (void *)); դատարկ անվանել (դատարկ * args); պաշտպանված ՝ T * _ օբյեկտ; դատարկ (T:: *_ մեթոդ) (անվավեր *); }; կաղապար inline middleware:: Delegate:: Delegate (T *object, void (T:: *method) (void *)): _object (object), _method (method) {} template inline void middleware:: Delegate:: invoke (դատարկ * args) {(_object-> * _ մեթոդը) (args); }
Քանի որ պատվիրակի դասը կաղապարային դաս է, ինչը նշանակում է, որ պատվիրակը տարբերություն է պատվիրակի նկատմամբ, ինչպե՞ս անել, որ դրանք սլաքով նշվեն նույն տիպի: Պատասխանը ինտերֆեյս է, ուստի IDelegate.h- ում կա IDelegate ինտերֆեյս:
class middleware:: interface:: IDelegate {
հրապարակային ՝ վիրտուալ դատարկության կանչ (դատարկ * args) = 0; };
PIR Sensor- ի և Loudness Sensor- ի դասում կա _ պատվիրակներ անունով փոփոխական, որն օգտագործվում է պատվիրակների ցուցիչը պահելու համար, և կա invokeAllDelegates () անունով մեթոդ, որն օգտագործվում է _ պատվիրակների բոլոր պատվիրակներին կանչելու համար, այն կոչվելու է չափման () մեթոդ:
Ո NOTՇԱԴՐՈԹՅՈՆ. Պատվիրակելու մեթոդներ, ինչպիսիք են changeAnimation (), changeSpeed () և changeColor (), կանչվելու են timer2 ընդհատման մեջ, այնպես որ մի օգտագործեք հետաձգում () կամ այլ ընդհատումների վրա հիմնված գործառույթ:
Խորհուրդ ենք տալիս:
Հիշողության ձայնագրիչ - Սուրբ Christmasննդյան նվեր. 8 քայլ (նկարներով)
Հիշողության ձայնագրիչ - Սուրբ Christmasննդյան նվեր. Ciao a tutti! In vista del Natale arriva il momento dei regali, sono sicuro quindi che molti di voi sentiranno la needità di donare qualcosa di speciale. In questo periodo così difficile certamente sono mancate molte առիթi per condividere e
Սուրբ Christmasննդյան լուսային շոու ՝ համաժամեցված երաժշտության հետ: 4 քայլ
Christmas Light Show Synchronized to Music. Թույլ մի տվեք, որ այդ անունը ձեզ վախեցնի: Դժվար չէ սովորել, թե ինչպես դա անել: Չնայած ես ձեզ կզգուշացնեմ, որ սա կարող է լինել բավականին
DIY ավտոմատ երաժշտական Սուրբ Christmasննդյան լույսեր (MSGEQ7 + Arduino). 6 քայլ (նկարներով)
DIY ավտոմատ երաժշտական Սուրբ ightsննդյան լույսեր (MSGEQ7 + Arduino). Այսպիսով, ամեն տարի ասում եմ, որ պատրաստվում եմ դա անել և երբեք չեմ զբաղվի դրանով, քանի որ շատ եմ ձգձգում: 2020 թվականը փոփոխությունների տարի է, ուստի ես ասում եմ, որ դա դա անելու տարին է: Այսպիսով, հուսով եմ, որ ձեզ դուր կգան և պատրաստեք ձեր սեփական երաժշտական ամանորյա լույսերը: Սա լինելու է մի
Սուրբ Christmasննդյան լույս. 4 քայլ
Սուրբ :նունդ. Սուրբ Christmasնունդը իմ ամենասիրելի տոներից է, ձյունը, լույսերը, Ձմեռ պապը, նվերներ: Դա պարզապես զարմանալի է: Իմ երազանքն է ձյուն տեսնել Սուրբ Christmasննդյան օրերին, ձյան մեջ բոլոր գունագեղ լույսերով: Այսպիսով, այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես ավելացնել LED լույսերը
Երաժշտության ռեակտիվ լույս -- Ինչպես կատարել սուպեր պարզ երաժշտություն Ռեակտիվ լույս `աշխատասեղանին հիանալի դարձնելու համար. 5 քայլ (նկարներով)
Երաժշտության ռեակտիվ լույս || Ինչպես կատարել սուպեր պարզ երաժշտություն Ռեակտիվ լույս `աշխատասեղան պատրաստելու համար: Հե what բասը, որն իրականում ցածր հաճախականության աուդիո ազդանշան է: Այն կառուցելը շատ պարզ է: Մենք