Tartalomjegyzék:
- 1. lépés: A projektben használt dolgok
- 2. lépés: Hardvercsatlakozás
- 3. lépés: Szoftverprogramozás
- 4. lépés: Művelet
Videó: Karácsonyi zene örömfény: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Boldog Karácsonyt! Szeretnél egy karácsonyfát, amely kölcsönhatásba léphet veled?
1. lépés: A projektben használt dolgok
Hardver alkatrészek
- Seeeduino V4.2
- Alappajzs V2
- Grove - Állítható PIR mozgásérzékelő
- Grove - Hangosság érzékelő
- Grove - WS2813 RGB LED szalag Vízálló - 60 LED/m - 1m
Szoftveralkalmazások és online szolgáltatások
Arduino IDE
2. lépés: Hardvercsatlakozás
Csatlakoztassa a PIR érzékelőt, a hangosságérzékelőt és a LED szalagot az alappajzs D2, A0 és D6 portjához külön. Csatlakoztassa az alappajzsot a Seeduino -hoz, minden kész.
3. lépés: Szoftverprogramozás
A következő könyvtárakat telepíteni kell a programozás előtt, kérjük, töltse le és importálja őket manuálisan az Arduino IDE -be:
- LED-csík
- MsTimer2
- Arduino_Vector
Annak érdekében, hogy a kód tömörebb legyen, csomagoltuk. A CheerLight osztály a projekt alkalmazási osztálya.
osztályos alkalmazás:: CheerLight
: nyilvános alkalmazás:: felület:: IApplication {public: void setup (void); void loop (void); void setPIRSensorPin (uint8_t pin); void setLoudnessSensorPin (uint8_t pin); void intézkedésSensors (void); void changeAnimation (void * args); void changeSpeed (void * args); void changeColor (void * args); statikus alkalmazás:: CheerLight * getInstance (void); védett: illesztőprogram:: LEDStrip _ledStrip; illesztőprogram:: PIRSensor _pirSensor; illesztőprogram:: LoudnessSensor _loudnessSensor; uint8_t _animation; köztes szoftver:: Delegate _detectedDelegate; köztes szoftver:: Delegálás _absoluteLoudnessDelegate; köztes szoftver:: Delegate _relativeLoudnessDelegate; CheerLight (érvénytelen); statikus alkalmazás:: CheerLight _instance; };
A CheerLight osztályt a Singleton Patterns tervezte, ami azt jelenti, hogy csak egy példány létezik, a CheerLight:: getInstance () meghívható erre a példányra. Ha az érzékelők kapcsolata eltér a hardverkapcsolattól, akkor a setPIRSensorPin () és a setLoudnessSensorPin () metódusok meghívásával megváltoztathatja őket.
Javasoljuk, hogy az időzítő megszakításában hívja meg a meetSensors () metódust, hogy az érzékelőket időben mérjék, de a changeAnimation (), changeSpeed () vagy changeColor () metódusok manuális megadása nem szükséges. Az érzékelők mérésekor a küldötteken keresztül hívják őket.
Mi az a küldött?
Mint mindannyian tudjuk, deklarálhatunk egy függvénymutatót, és ráirányíthatjuk egy C függvényre:
void func1 (void);
void (*pFunc) (void) = func1;
és annak segítségével hívja meg a rámutatott függvényt
pFunc ();
De vannak különbségek a C ++ nyelvben, ha megpróbálja lefordítani a kódot az alábbiak szerint:
A osztály {
nyilvános: void func1 (void); }; void (*pFunc) (void) = & A:: func1;
a fordító jelenteni fog egy típuskonverziós hibát, itt a megfelelő példa:
void (A::*pFunc) (void) = & A:: func1;
Amikor megpróbáljuk meghívni ezt a módszert, ismét hiba történik. A hiba oka az, hogy egy objektum-metódust egy objektumnak kell meghívnia. Létrehozunk tehát egy objektumot annak megnevezésére:
A a;
a.*pFunc ();
Ezúttal semmi gond. Tehát van Delegate osztály a Delegate.h -ban.
sablon
class middleware:: Delegate: public middleware:: interface:: IDelegate {public: Delegate (T *object, void (T:: *method) (void *)); void invoke (void * args); védett: T * _objektum; void (T:: *_ módszer) (void *); }; sablon inline middleware:: Delegate:: Delegate (T *object, void (T:: *method) (void *)): _object (object), _method (method) {} template inline void middleware:: Delegate:: invoke (void * args) {(_object-> * _ metódus) (args); }
Mivel a Delegate osztály sablonosztály, ami azt jelenti, hogy a Delegate eltér a Delegate -től, hogyan lehet őket azonos mutatóval mutatni? A válasz az interfész, tehát van IDelegate felület az IDelegate.h -ban.
class middleware:: interfész:: IDelegate {
public: virtual void invoke (void * args) = 0; };
A PIR érzékelő és a hangosság érzékelő osztályában van egy _delegates nevű változó, amelyet a küldöttek mutatójának tárolására használnak, és van egy invokeAllDelegates () nevű metódus, amelyet az összes delegátus meghívására használnak a _delegates -ben, ez lesz a mértékegység () metódus.
MEGJEGYZÉS: A delegált módszerek, például a changeAnimation (), a changeSpeed () és a changeColor () meghívásra kerülnek a timer2 interrupt-ban, ezért NE használjon delay () vagy más megszakításon alapuló függvényt.
Ajánlott:
Tűz, zene és fények szinkronizálása: 10 lépés (képekkel)
Tűz, zene és fények szinkronizálása: Mindannyian tudjuk, hogy az elektronikát számos fontos feladatra használják kórházakban, iskolákban, gyárakban. Miért ne szórakozhatna velük egy kicsit. Ebben az utasításban tűz és fények (Led -ek) sorozatát fogom készíteni, amelyek reagálnak a zenére, hogy egy kicsit zenéljenek
Egyszerű zümmögő zene: 6 lépés
Egyszerű zümmögő zene: Egy egyszerű könyvtár, amellyel saját dalokat adhat ki az Arduino segítségével hangjelzőn vagy hangszórón keresztül. Egy kis példa a " praeludium " Johann Sebastian Bach szerepel
Hangulatos hangszóró- Erőteljes hangszóró a hangulati zene lejátszásához a környezeti hőmérséklet alapján: 9 lépés
Hangulatos hangszóró- Erőteljes hangszóró a hangulati zene lejátszásához a környezeti hőmérséklet alapján: Üdv! Az MCT Howest Kortrijk-i iskolai projektemhez készítettem egy hangulati hangszórót, ez egy intelligens Bluetooth hangszóró, különböző érzékelőkkel, LCD-vel és WS2812b-vel LED szalag mellékelve. A hangszóró háttérzenét játszik a hőmérséklet alapján, de
Zene reaktív száloptikai csillag mennyezetre szerelés: 11 lépés (képekkel)
Zene reaktív száloptikai csillag mennyezeti szerelés: Szeretne egy darabot a galaxisból otthonában? Az alábbiakban megtudhatja, hogyan készült! Évekig ez volt az álomprojektem, és végül elkészült. Elég sokáig tartott a befejezése, de a végeredmény annyira kielégítő volt, hogy biztos vagyok benne, hogy megérte. Egy kis bi
Karácsonyi doboz: Arduino/ioBridge internetvezérelt karácsonyi fények és zenei műsor: 7 lépés
Karácsonyi doboz: Arduino/ioBridge internetvezérelt karácsonyi fények és zenei műsor: A karácsonyi doboz projektem egy internet által vezérelt karácsonyi fényekből és zenei műsorból áll. Egy karácsonyi dal kérhető on-line, amelyet sorba állítanak, és a kért sorrendben játsszák le. A zenét FM -rádión továbbítják