Turinys:
- 1 žingsnis: šiame projekte naudojami dalykai
- 2 žingsnis: aparatinės įrangos prijungimas
- 3 žingsnis: programinės įrangos programavimas
- 4 žingsnis: veikimas
Video: Kalėdų muzikos džiaugsmo šviesa: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Linksmų Kalėdų! Ar norite turėti Kalėdų eglutę, kuri galėtų su jumis bendrauti?
1 žingsnis: šiame projekte naudojami dalykai
Techninės įrangos komponentai
- Seeeduino V4.2
- Pagrindo skydas V2
- Grove - reguliuojamas PIR judesio jutiklis
- Grove - garsumo jutiklis
- Grove - WS2813 RGB LED juostelė Atsparus vandeniui - 60 LED/m - 1 m
Programinės įrangos programos ir internetinės paslaugos
„Arduino IDE“
2 žingsnis: aparatinės įrangos prijungimas
Prijunkite PIR jutiklį, garsumo jutiklį ir LED juostelę prie „Base Shield“jungties D2, A0 ir D6 atskirai. Prijunkite „Base Shield“prie „Seeduino“, viskas padaryta.
3 žingsnis: programinės įrangos programavimas
Toliau pateiktas bibliotekas reikia įdiegti prieš programavimą, atsisiųskite ir importuokite jas į „Arduino IDE“rankiniu būdu:
- Led_Strip
- MsTimer2
- Arduino_Vektorius
Kad kodas būtų glaustesnis, mes jį supakavome. „CheerLight“klasė yra šio projekto taikymo klasė.
klasės taikymas:: „CheerLight“
: viešoji programa:: sąsaja:: IApplication {public: void setup (void); tuštumos kilpa (void); void setPIRSensorPin (uint8_t kaištis); void setLoudnessSensorPin (uint8_t kaištis); niekinė priemonėJutikliai (negalioja); void changeAnimation (void * args); void changeSpeed (void * args); void changeColor (void * args); statinė programa:: „CheerLight“* getInstance (negalioja); apsaugota: tvarkyklė:: LEDStrip _ledStrip; vairuotojas:: PIRSensor _pirSensor; vairuotojas:: LoudnessSensor _loudnessSensor; uint8_t _animacija; tarpinė programinė įranga:: Delegate _detectedDelegate; tarpinė programinė įranga:: Deleguoti _absoluteLoudnessDelegate; tarpinė programinė įranga:: Delegate _relativeLoudnessDelegate; „CheerLight“(negalioja); statinė programa:: CheerLight _instance; };
„CheerLight“klasę sukūrė „Singleton Patterns“, o tai reiškia, kad yra tik vienas egzempliorius, į tą egzempliorių galite paskambinti „CheerLight:: getInstance ()“. Jei jūsų jutiklių ryšys skiriasi nuo aparatinės įrangos ryšio, galite juos pakeisti paskambinę setPIRSensorPin () ir setLoudnessSensorPin () metodais.
Mes rekomenduojame iškviesti laikmačio metodą meetSensors (), kad jutikliai būtų išmatuoti laiku, tačiau skambinti changeAnimation (), changeSpeed () arba changeColor () metodai rankiniu būdu nėra būtini. Jie bus iškviesti per delegatus, kai bus išmatuoti jutikliai.
Kas yra Delegatas?
Kaip visi žinome, mes galime paskelbti funkcijų žymeklį ir nukreipti jį į funkciją C:
void func1 (negalioja);
void (*pFunc) (void) = func1;
ir naudokite jį, kad iškviestumėte funkciją, kurią nurodė
pFunc ();
Tačiau C ++ yra skirtumų, jei bandysite sudaryti kodą taip:
A klasė {
public: void func1 (negalioja); }; void (*pFunc) (void) = & A:: func1;
kompiliatorius praneš apie tipo konversijos klaidą, čia yra tinkamas pavyzdys:
void (A::*pFunc) (void) = & A:: func1;
Kai bandome jį naudoti tam metodui iškviesti, vėl klaida. Šios klaidos priežastis yra ta, kad objektas-metodas turi būti iškviestas objektu. Taigi mes sukuriame objektą, kurį pavadinsime:
A a;
a.*pFunc ();
Šį kartą jokių problemų. Taigi Delegate klasėje yra Delegate.h.
šabloną
klasės tarpinė programinė įranga:: Deleguoti: viešoji tarpinė programinė įranga:: sąsaja:: IDelegate {public: Delegate (T *objektas, negaliojantis (T:: *metodas) (void *)); void invoke (void * args); apsaugotas: T * _objektas; void (T:: *_ metodas) (void *); }; šablono vidinė tarpinė programinė įranga:: Deleguoti:: Deleguoti (T *objektas, negaliojantis (T:: *metodas) (negaliojantis *)): _objektas (objektas), _metodas (metodas) {} šablonas inline void tarpinė programa:: Deleguoti:: invoke (void * args) {(_objektas-> * _ metodas) (args); }
Kadangi „Delegate“klasė yra šablonų klasė, o tai reiškia, kad „Delegate“yra skirtumas tarp „Delegate“, kaip padaryti, kad juos nurodytų rodyklė, būtų tokio paties tipo? Atsakymas yra sąsaja, todėl IDelegate.h yra IDelegate sąsaja.
klasės tarpinė programa:: sąsaja:: IDelegate {
public: virtual void invoke (void * args) = 0; };
PIR jutiklio ir garsumo jutiklio klasėje yra kintamasis, pavadintas _delegates, naudojamas delegatų rodyklės saugojimui, ir yra metodas, vadinamas invokeAllDelegates (), naudojamas iškviesti visus delegatus _delegates, jis bus vadinamas mato () metodu.
PASTABA: Deleguoti metodus, tokius kaip changeAnimation (), changeSpeed () ir changeColor (), bus iškviesti timer2 interrupt, todėl NENAUDOKITE jame delay () ar kitos pertraukimu pagrįstos funkcijos.
Rekomenduojamas:
Kvėpuojanti Kalėdų eglutė - „Arduino“Kalėdų šviesos valdiklis: 4 žingsniai
Kvėpuojanti Kalėdų eglutė-„Arduino“Kalėdų šviesos valdiklis: Tai nėra gera žinia, kad mano 9 pėdų iš anksto apšviestos dirbtinės Kalėdų eglutės valdymo dėžutė sulūžo prieš Kalėdas , ir gamintojas nepateikia atsarginių dalių. Šis nesuprantamas pavyzdys parodo, kaip savo LED šviesos tvarkyklę ir valdiklį naudoti naudojant „Ar
Muzikos surinkėjas: integruotas virtualus muzikos instrumentas su blokiniu jutikliniu jutikliu: 4 žingsniai
Muzikos surinkėjas: integruotas virtualus muzikos instrumentas su blokiniu jutikliniu jutikliu: yra daug žmonių, norinčių išmokti groti muzikos instrumentais. Deja, kai kurie iš jų to nepradeda dėl didelės instrumentų kainos. Remdamiesi ja, nusprendėme sukurti integruotą virtualių muzikos instrumentų sistemą, kad sumažintume biudžetą pradedant
Salės efekto jutiklis: Kalėdų muzikos dėžutė: 4 žingsniai
Salės efekto jutiklis: Kalėdinė muzikos dėžutė: tai muzikos dėžutė, kuri atidarius groja muziką (žiūrėkite vaizdo įrašą!). Tai puikus, ypatingas ir unikalus būdas supakuoti dovanas savo ypatingam žmogui! Jis naudoja salės efekto jutiklį, kad patikrintų, ar dangtelis buvo atidarytas dėl magnetinio lauko trūkumo
Muzikinė reaktyvioji šviesa -- Kaip sukurti itin paprastą muzikos reaktyviąją šviesą, kad stalinis kompiuteris būtų patrauklus: 5 žingsniai (su paveikslėliais)
Muzikinė reaktyvioji šviesa || Kaip sukurti itin paprastą muzikinę reaktyviąją šviesą, kad stalinis kompiuteris būtų patrauklus. Ei, kas vyksta, vaikinai, šiandien mes sukursime labai įdomų projektą. Šiandien mes sukursime muzikos reaktyviąją šviesą. LED pakeis savo ryškumą pagal bosas, kuris iš tikrųjų yra žemo dažnio garso signalas. Tai labai paprasta sukurti. Mes
Kalėdų dėžutė: „Arduino“/„ioBridge“internetu valdomos Kalėdų šviesos ir muzikos šou: 7 žingsniai
Kalėdų dėžutė: „Arduino“/„ioBridge“internetu valdomos Kalėdų šviesos ir muzikos šou: Mano „Kalėdų dėžutės“projektą sudaro interneto valdomos Kalėdų šviesos ir muzikos šou. Kalėdų dainos galima paprašyti internetu, tada ji įdedama į eilę ir grojama tokia tvarka, kokios buvo paprašyta. Muzika perduodama per FM radiją