Სარჩევი:
- ნაბიჯი 1: ნივთები, რომლებიც გამოიყენება ამ პროექტში
- ნაბიჯი 2: აპარატურის კავშირი
- ნაბიჯი 3: პროგრამული უზრუნველყოფის პროგრამირება
- ნაბიჯი 4: ოპერაცია
ვიდეო: საშობაო მუსიკა Cheer Light: 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
Შობას გილოცავთ! გსურთ გქონდეთ ნაძვის ხე, რომელსაც შეუძლია თქვენთან ურთიერთობა?
ნაბიჯი 1: ნივთები, რომლებიც გამოიყენება ამ პროექტში
აპარატურის კომპონენტები
- Seeeduino V4.2
- ბაზის ფარი V2
- გროვი - რეგულირებადი PIR მოძრაობის სენსორი
- გროვი - ხმამაღალი სენსორი
- Grove - WS2813 RGB LED Strip წყალგაუმტარი - 60 LED/m - 1 მ
პროგრამული უზრუნველყოფის პროგრამები და ონლაინ სერვისები
Arduino IDE
ნაბიჯი 2: აპარატურის კავშირი
ცალკე დაუკავშირეთ PIR სენსორი, ხმამაღალი სენსორი და LED ზოლები ბაზის ფარის პორტში D2, A0 და D6. შეაერთეთ ბაზის ფარი Seeduino– ში, ყველაფერი დასრულებულია.
ნაბიჯი 3: პროგრამული უზრუნველყოფის პროგრამირება
ქვემოთ ჩამოთვლილი ბიბლიოთეკები უნდა დაინსტალირდეს პროგრამირებამდე, გთხოვთ გადმოწეროთ და შეიტანოთ ისინი თქვენს Arduino IDE– ში ხელით:
- Led_Strip
- MsTimer2
- არდუინო_ვექტორი
იმისათვის, რომ კოდი იყოს უფრო ლაკონური, ჩვენ შეფუთული გვაქვს. CheerLight კლასი არის ამ პროექტის აპლიკაციის კლასი.
კლასის აპლიკაცია:: CheerLight
: public application:: interface:: IApplication {public: void setup (void); ბათილი მარყუჟი (ბათილია); void setPIRSensorPin (uint8_t pin); void setLoudnessSensorPin (uint8_t pin); ბათილი ღონისძიება სენსორები (ბათილია); void change ანიმაცია (void * args); void changeSpeed (void * args); void changeColor (void * 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 () იმ ინსტანციისთვის. თუ თქვენი სენსორების კავშირი განსხვავდება აპარატურასთან, შეგიძლიათ შეცვალოთ ისინი setPIRSensorPin () და setLoudnessSensorPin () მეთოდების გამოძახებით.
ჩვენ გირჩევთ ქრონომეტრის შეფერხების ღონისძიება სენსორების გაზომვისას მათ დელეგატების საშუალებით დაურეკავთ.
რა არის დელეგატი?
როგორც ყველამ ვიცით, ჩვენ შეგვიძლია გამოვაცხადოთ ფუნქციის მაჩვენებელი და დავანიშნოთ ის ფუნქციაზე C:
void func1 (ბათილია);
void (*pFunc) (void) = func1;
და გამოიყენეთ იგი იმ ფუნქციის გამოსაძახებლად, რომელზეც ის მიუთითებდა
pFunc ();
მაგრამ არსებობს განსხვავებები C ++ - ში, თუ თქვენ ცდილობთ შეადგინოთ კოდი ქვემოთ:
კლასი A {
საჯარო: void func1 (void); }; void (*pFunc) (void) = & A:: func1;
შემდგენელი გამოაქვეყნებს ტიპის კონვერტაციის შეცდომას, აქ არის სწორი მაგალითი:
void (A::*pFunc) (void) = & A:: func1;
როდესაც ჩვენ ვცდილობთ გამოვიყენოთ ის ამ მეთოდის გამოსაძახებლად, შეცდომა კვლავ ხდება. ამ შეცდომის მიზეზი ის არის, რომ ობიექტი-მეთოდი უნდა იყოს გამოძახებული ობიექტის მიერ. ჩვენ ვქმნით ობიექტს, რომელსაც უნდა ვუწოდოთ:
Აა;
a.*pFunc ();
ამჯერად პრობლემა არ არის. ასე რომ, არსებობს დელეგატის კლასი Delegate.h.
შაბლონი
კლასის middleware:: დელეგატი: public middleware:: ინტერფეისი:: IDelegate {საჯარო: დელეგატი (T *ობიექტი, ბათილი (T:: *მეთოდი) (ბათილია *)); void invoke (void * args); დაცულია: T * _ ობიექტი; სიცარიელე (T:: *_ მეთოდი) (ბათილია *); }; შაბლონი inline middleware:: დელეგირება:: დელეგირება (T *ობიექტი, ბათილი (T:: *მეთოდი) (ბათილია *)): _ ობიექტი (ობიექტი), _ მეთოდი (მეთოდი) {} შაბლონი inline void middleware:: Delegate:: invoke (void * args) {(_ ობიექტი-> * _ მეთოდი) (args); }
იმის გამო, რომ დელეგატის კლასი არის შაბლონური კლასი, რაც ნიშნავს დელეგატი არის განსხვავება დელეგატთან, როგორ ვაქციოთ ისინი მაჩვენებლით იყოს იგივე ტიპის? პასუხი არის ინტერფეისი, ამიტომ არის IDelegate ინტერფეისი IDelegate.h- ში.
კლასის middleware:: ინტერფეისი:: IDelegate {
საჯარო: ვირტუალური სიცარიელის გამოძახება (ბათილად * args) = 0; };
PIR სენსორისა და ხმამაღალი სენსორის კლასში არის ცვლადი სახელწოდებით _ დელეგატები, რომლებიც გამოიყენება დელეგატების მაჩვენებლის შესანახად და აქვს მეთოდი სახელად invokeAllDelegates (), რომელიც გამოიყენება დელეგატების ყველა დელეგატის გამოსაძახებლად, მას უწოდებენ ღონისძიების () მეთოდს.
შენიშვნა: დელეგირების მეთოდები, როგორიცაა changeAnimation (), changeSpeed () და changeColor () გამოიძახება timer2 interrupt- ში, ასე რომ არ გამოიყენოთ დაგვიანებით () ან სხვა შეფერხებაზე დაფუძნებული ფუნქცია.
გირჩევთ:
კუბოს საცეკვაო მუსიკა არდუინოს გამოყენებით: 6 ნაბიჯი
კუბოს საცეკვაო მუსიკა არდუინოს გამოყენებით: ამ გაკვეთილში მე გეტყვით როგორ შეგიძლიათ გამოიყენოთ არდუინო მუსიკის შესაქმნელად მხოლოდ სპიკერის გამოყენებით (MP3 მოდული არ არის საჭირო). ჯერ ნახეთ ეს ვიდეო გაკვეთილი
როგორ გავხადოთ მუსიკა რეაქტიული ARGB შუქნიშანი: 5 ნაბიჯი
როგორ გავხადოთ მუსიკა რეაქტიული ARGB Led Lights: გამარჯობა, ამ ინსტრუქციურად მე გაჩვენებთ თუ როგორ უნდა შექმნათ მუსიკა რეაქტიული rgb led ზოლები ძალიან მარტივი გზით, ის წარმოქმნის სხვადასხვა ფერად ტრანზისტებს თქვენი საყვარელი მუსიკის დაკვრისას უფრო გასაოცარი პროექტებისთვის ეწვიეთ letsmakeprojects.com
მუსიკა რეაქტიული სინათლე -- როგორ გავხადოთ სუპერ მარტივი მუსიკა რეაქტიული შუქი დესკტოპის გასაოცარი გასაკეთებლად .: 5 ნაბიჯი (სურათებით)
მუსიკა რეაქტიული სინათლე || როგორ გავხადოთ სუპერ მარტივი მუსიკა რეაქტიული შუქი დესკტოპის გასაუმჯობესებლად. ჰეი, რა ხდება ბიჭებო, დღეს ჩვენ ავაშენებთ ძალიან საინტერესო პროექტს. დღეს ჩვენ ვაშენებთ მუსიკალურ რეაქტიულ შუქს. Led შეცვლის მის სიკაშკაშეს ბასი, რომელიც რეალურად დაბალი სიხშირის აუდიო სიგნალია. აშენება ძალიან მარტივია. ჩვენ
Arduino საშობაო Cheer!: 5 ნაბიჯი (სურათებით)
არდუინოს საშობაო მხიარულება!: აცადეთ სეზონი, რომ არდუინოს სადღესასწაულო ადგილებზე დაიკიდოთ და რა უკეთესი ადგილი, ვიდრე ნაძვის ხე! ამ პროექტში ჩვენ ვაპირებთ გავაკეთოთ ნაძვის ხე, რომელსაც შეუძლია იმღეროს სხვადასხვა საშობაო სიმღერები და აანთოს მუსიკასთან ერთად
საშობაო ყუთი: Arduino/ioBridge ინტერნეტით კონტროლირებადი საშობაო შუქები და მუსიკალური შოუ: 7 ნაბიჯი
საშობაო ყუთი: Arduino/ioBridge ინტერნეტით კონტროლირებადი საშობაო შუქები და მუსიკალური შოუ: ჩემი საახალწლო ყუთის პროექტი შედგება ინტერნეტ კონტროლირებადი საშობაო შუქებისა და მუსიკალური შოუსგან. საშობაო სიმღერა შეიძლება ითხოვოს ონლაინ რეჟიმში, რომელიც შემდეგ იდება რიგში და უკრავს მოთხოვნილი თანმიმდევრობით. მუსიკა გადადის FM სტატისტიკაზე