Mundarija:
- 1 -qadam: Ushbu loyihada ishlatilgan narsalar
- 2 -qadam: Uskuna ulanishi
- 3 -qadam: dasturiy ta'minot
- 4 -qadam: operatsiya
Video: Rojdestvo musiqasi quvnoq nur: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Rojdestvo muborak! Siz bilan muloqot qila oladigan Rojdestvo daraxti bo'lishini xohlaysizmi?
1 -qadam: Ushbu loyihada ishlatilgan narsalar
Uskuna komponentlari
- Seeeduino V4.2
- Asosiy qalqon V2
- Grove - sozlanishi PIR harakat sensori
- Grove - ovoz balandligi sensori
- Grove - suv o'tkazmaydigan WS2813 RGB LED tasmasi - 60 LED/m - 1m
Dasturiy ta'minot va onlayn xizmatlar
Arduino IDE
2 -qadam: Uskuna ulanishi
PIR Sensor, Shovqin sensori va LED tasmasini Base Shield D2, A0 va D6 portiga alohida ulang. Baza qalqonini Seeduino -ga ulang, hammasi tayyor.
3 -qadam: dasturiy ta'minot
Quyidagi kutubxonalar dasturlashdan oldin o'rnatilishi kerak, ularni Arduino IDE -ga qo'lda yuklab oling va import qiling:
- Led_Strip
- MsTimer2
- Arduino_Vector
Kodni aniqroq qilish uchun biz uni qadoqladik. CheerLight klassi - bu loyihaning amaliy sinfi.
sinf ilovasi:: CheerLight
: umumiy dastur:: interfeys:: IApplication {public: void setup (void); bo'sh halqa (bo'sh); bekor qilingan setPIRSensorPin (uint8_t pin); bekor qilingan setLoudnessSensorPin (uint8_t pin); bo'sh o'lchov Sensorlar (bo'sh); void changeAnimatsiya (void * args); void changeSpeed (void * args); void changeColor (void * args); statik dastur:: CheerLight * getInstance (bekor); himoyalangan: haydovchi:: LEDStrip _ledStrip; haydovchi:: PIRSensor _pirSensor; haydovchi:: LoudnessSensor _loudnessSensor; uint8_t _ jonlantirish; o'rta dastur:: Delegate _detectedDelegate; o'rta dastur:: Delegate _absoluteLoudnessDelegate; o'rta dastur:: Delegate _relatifLoudnessDelegate; CheerLight (bekor); statik dastur:: CheerLight _instance; };
CheerLight klassi Singleton Patterns tomonidan ishlab chiqilgan, ya'ni buning uchun faqat bitta misol bor, siz CheerLight:: getInstance () ga bu misolga qo'ng'iroq qilishingiz mumkin. Agar Sensor ulanishi "Hardware Connection" dan farq qiladigan bo'lsa, ularni setPIRSensorPin () va setLoudnessSensorPin () usullariga qo'ng'iroq qilib o'zgartirish mumkin.
Sensorlarni o'z vaqtida o'lchash uchun, taymer uzilishida o'lchov sensori () usulini chaqirishni tavsiya qilamiz, lekin changeAnimation (), changeSpeed () yoki changeColor () usullarini qo'lda chaqirish shart emas. Sensorlar o'lchaganida, ular Delegatlar orqali chaqiriladi.
Vakil nima?
Hammamiz bilganimizdek, biz funktsiya ko'rsatgichini e'lon qilib, uni C funktsiyasiga ishora qilishimiz mumkin:
void func1 (bekor);
void (*pFunc) (void) = func1;
va undan ko'rsatilgan funktsiyani chaqirish uchun foydalaning
pFunc ();
Ammo C ++ da farqlar mavjud, agar siz quyidagi kodni kompilyatsiya qilmoqchi bo'lsangiz:
A sinf {
ommaviy: void func1 (void); }; void (*pFunc) (void) = & A:: func1;
kompilyator turdagi konvertatsiya xatosi haqida xabar beradi, bu erda to'g'ri misol:
void (A::*pFunc) (void) = & A:: func1;
Biz uni ushbu usulni chaqirish uchun ishlatmoqchi bo'lsak, yana xato. Bu xatoning sababi shundaki, ob'ekt-usul ob'ekt tomonidan chaqirilishi kerak. Shunday qilib, biz uni chaqirish uchun ob'ekt yaratamiz:
A a;
a.*pFunc ();
Bu safar muammo yo'q. Demak, Delegate.h da Delegat klassi bor.
shablon
sinf o'rta dasturlari:: Delegat: umumiy o'rta dastur:: interfeys:: IDelegate {public: Delegate (T *object, void (T:: *method) (void *)); void chaqirish (void * args); himoyalangan: T * _object; void (T:: *_ usuli) (bekor *); }; shablon ichidagi o'rta dasturlar:: Delegat:: Delegat (T *obyekti, void (T:: *usuli) (void *)): _object (ob'ekt), _method (usul) {} shablon ichki bo'shliq o'rta dastur:: Delegate:: invoke (void * args) {(_object-> * _ usuli) (args); }
Delegat klassi shablon klassi bo'lgani uchun, Delegatsiya Delegatsiyadan farq qiladi, shuning uchun ularni bir xil turdagi ko'rsatgich bilan ko'rsatishni qanday qilish kerak? Javob - bu interfeys, shuning uchun IDelegate.h da IDelegate interfeysi mavjud.
o'rta dasturiy ta'minot:: interfeys:: IDelegate {
ommaviy: virtual bo'shliqni chaqirish (void * args) = 0; };
PIR Sensor va Loudness Sensor sinfida Delegatlar ko'rsatgichini saqlash uchun ishlatiladigan _delegates nomli o'zgarmaydigan mavjud va barcha delegatlarni _delegatlarda chaqirish uchun invokeAllDelegates () deb nomlangan usul mavjud, u chora () usuli deb nomlanadi.
QAYD: changeAnimation (), changeSpeed () va changeColor () kabi vakolatli usullar timer2 uzilishida chaqiriladi, shuning uchun unda delay () yoki boshqa uzilishga asoslangan funktsiyani ishlatmang.
Tavsiya:
Rojdestvo daraxti bilan nafas olish - Arduino Rojdestvo chiroqlarini boshqaruvchi: 4 qadam
Rojdestvo daraxti bilan nafas olish-Arduino Rojdestvo chiroqlarini boshqarish moslamasi: 9 metrli oldindan yoritilgan sun'iy Rojdestvo daraxti uchun boshqaruv qutisi Rojdestvo oldidan sindirilgani yaxshi yangilik emas va ishlab chiqaruvchi zaxira qismlarini bermaydi. Bu aql bovar qilmaydigan LED yorug'lik drayveri va boshqaruvchisining Ar
Yurak musiqasi reaktiv nur: 7 qadam
"Yurak musiqasi" reaktiv nuri: Salom do'stim, bugun men "Heart Music" reaktiv nurini yaratmoqchiman, unda musiqa shu davrada o'ynasa, LEDlar musiqa sifatida yonadi. Keling, boshlaylik
Quvnoq terlik: 7 qadam
Quvonchli terlik: Bu terlik joystik kabi ishlaydi, ular har bir oyog'ida ikkita analog datchik bilan yaratilgan. Datchiklar badan balzamida yoki ikkala oyog'ining sog'ayishida tanadan tortilgan bosimni o'lchaydilar. Shunday qilib, yuqoriga, o'ngga, pastga va chapga kirish
Arzon va quvnoq kommutator ishqibozlari: 11 qadam
Arzon va quvnoq kommutatorli muxlislar: Shunday qilib, men yolg'on gapirgan narsalarim yordamida kompyuterimga ikkita katta muxlisni yaxshi yoritilgan kalitlar bilan qo'shdim. Bilaman, siz hozirda 5 1/2 dyuymli ko'rfazli fanatlagichlarni ancha arzon narxda sotib olishingiz mumkin, lekin menimcha, bu sovuqroq
Rojdestvo qutisi: Arduino/ioBridge Internet orqali boshqariladigan Rojdestvo chiroqlari va musiqiy shou: 7 qadam
Rojdestvo qutisi: Arduino/ioBridge Internet orqali boshqariladigan Rojdestvo chiroqlari va musiqiy shou: Mening xmas qutimdagi loyiham Internet bilan boshqariladigan Rojdestvo chiroqlari va musiqiy shoudan iborat. Rojdestvo qo'shig'ini onlayn tarzda so'rash mumkin, keyin navbatga qo'yiladi va kerakli tartibda ijro etiladi. Musiqa FM statida uzatiladi