תוכן עניינים:
וִידֵאוֹ: אור המוזיקה של חג המולד: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
חג מולד שמח! האם אתה רוצה שיהיה לך עץ חג המולד שיכול לתקשר איתך?
שלב 1: דברים המשמשים בפרויקט זה
רכיבי חומרה
- Seeeduino V4.2
- מגן בסיס V2
- Grove - חיישן תנועה PIR מתכוונן
- Grove - חיישן עוצמה
- Grove - רצועת LED WS2813 RGB עמיד למים - 60 LED/m - 1m
אפליקציות תוכנה ושירותים מקוונים
Arduino IDE
שלב 2: חיבור חומרה
חבר חיישן PIR, חיישן עוצמה ורצועת LED ליציאת D2, A0 ו- D6 של Base Shield בנפרד. חבר את מגן הבסיס לסדואינו, הכל נעשה.
שלב 3: תכנות תוכנה
הספריות להלן צריכות להתקין לפני התכנות, אנא הורד וייבא אותן ל- IDE שלך Arduino באופן ידני:
- רצועת לד
- MsTimer2
- Arduino_Vector
על מנת להפוך את הקוד לתמציתי יותר, ארזנו אותו. מחלקת CheerLight היא מחלקת היישומים של פרויקט זה.
יישום בכיתה:: CheerLight
: יישום ציבורי:: ממשק:: IApplication {public: void setup (void); לולאת חלל (חלל); setPIRSensorPin חלל (סיכה uint8_t); void setLoudnessSensorPin (uint8_t pin); void measureSensors (void); void changeAnimation (void * args); void changeSpeed (void * args); שינוי חלל צבע (void * args); יישום סטטי:: CheerLight * getInstance (void); מוגן: נהג:: LEDStrip _ledStrip; נהג:: PIRSensor _pirSensor; נהג:: LoudnessSensor _loudnessSensor; uint8_t _animation; תוכנת ביניים:: נציג _detectedDelegate; תוכנת ביניים:: נציג _absoluteLoudnessDelegate; תוכנות ביניים:: נציג _relativeLoudnessDelegate; CheerLight (חלל); יישום סטטי:: CheerLight _instance; };
מחלקת CheerLight תוכננה על ידי Singleton Patterns, מה שאומר שיש רק מופע אחד לכך, אתה יכול לקרוא ל- CheerLight:: getInstance () לאותו מופע. אם החיבור של החיישנים שלך שונה לחיבור חומרה, תוכל לשנות אותם על ידי קריאה לשיטות setPIRSensorPin () ו- setLoudnessSensorPin ().
אנו ממליצים לקרוא לשיטת MeasureSensors () בפסיעת טיימר בכדי לבצע חיישנים שנמדדים בזמן, אך אין צורך בשיחות שינויים ב- Animation (), ChangeSpeed () או ChangeColor () באופן ידני. הם יקראו באמצעות נציגים כאשר נמדדים חיישנים.
מהו נציג?
כפי שכולנו יודעים, אנו יכולים להכריז על מצביע פונקציות ולגרום לו להצביע על פונקציה ב- C:
חלל func1 (חלל);
void (*pFunc) (void) = func1;
ולהשתמש בו כדי לקרוא לפונקציה שאליה הצביע
pFunc ();
אך ישנם הבדלים ב- C ++, אם אתה מנסה לאסוף את הקוד למטה:
כיתה א {
ציבורי: void func1 (void); }; void (*pFunc) (void) = & A:: func1;
המהדר ידווח על שגיאת המרת סוג, להלן הדוגמה הנכונה:
void (A::*pFunc) (void) = & A:: func1;
כאשר אנו מנסים להשתמש בו כדי לקרוא לשיטה זו, שגיאה שוב. הסיבה לשגיאה זו היא שחייבים לקרוא לשיטת אובייקט על ידי אובייקט. אז אנו יוצרים אובייקט שקוראים לו:
א א;
a.*pFunc ();
הפעם אין בעיה. אז יש שיעור Delegate ב- Delegate.h.
תבנית
תוכנת ביניים בכיתה:: נציג: תוכנת ביניים ציבורית:: ממשק:: IDelegate {public: Delegate (T *object, void (T:: *method) (void *)); void invoke (void * args); מוגן: T * _object; void (T:: *_ שיטה) (void *); }; תבנית תוכנה מוטבעת באמצע:: נציג:: נציג (T *אובייקט, חלל (T:: *שיטה) (חלל *)): _ אובייקט (אובייקט), _ שיטה (שיטה) {} תבנית אינהלנטית של חלל תוכנה:: נציג:: להפעיל (void * args) {(_object-> * _ method) (args); }
מכיוון שמעמד Delegate הוא מחלקת תבניות, מה שאומר ש- Delegate הוא הבדל ל- Delegate, כיצד לגרום להם להצביע על -ידי המצביע בעלי אותו סוג? התשובה היא ממשק, כך שיש ממשק IDelegate ב- IDelegate.h.
תוכנה בינונית:: ממשק:: IDelegate {
ציבורי: הפעלת וירטואלית של void (void * args) = 0; };
במחלקה של חיישן PIR וחיישן עוצמה, יש משתנה בשם _ delegates המשמש לאחסון מצביע של נציגים, ויש שיטה בשם invokeAllDelegates () המשמשת לקריאת כל הנציגים ב- _ delegates, היא תקרא במידה () שיטה.
הערה: שיטות נציג, כגון changeAnimation (), changeSpeed () ו- changeColor () ייקראו ב- timer2 interrupt, לכן אל תשתמש בו ב- delay () או בפונקציה אחרת המבוססת על הפרעות.
מוּמלָץ:
רצועת אור חג המולד LED: 3 שלבים
רצועת אור חג המולד LED: רציתי ליצור פרויקט ארדואינו מהנה וחגיגי לחופשת חג המולד, אז החלטתי ליצור אורות רצועה מובילים של DIY. פרויקט זה אכן דורש מכונת הלחמה אז קחו זאת בחשבון
כיצד להפוך את המוזיקה לתגובות נורות LED LED ARGB: 5 שלבים
איך לגרום למוזיקה להגיב אורות LED לד ARGB: היי, בפרק ההדרכה הזה אראה לך כיצד להפוך מוזיקה להגיב רצועת LED RGB בצורה פשוטה מאוד, היא מייצרת טרנזיסטציות צבעוניות שונות בעת השמעת המוסיקה האהובה עליך לפרויקטים מדהימים נוספים בקר ב- letsmakeprojects.com
עץ חג המולד נושם - בקר אור חג המולד של ארדואינו: 4 שלבים
עץ חג המולד נושם-בקר אור חג המולד של ארדואינו: לא חדשות טובות כי תיבת הבקרה לעץ חג המולד המלאכותי שלי, בגובה 9 רגל, נשברה לפני חג המולד , והיצרן אינו מספק חלקי חילוף. זה בלתי ניתן להערכה מראה כיצד להפוך את מנהל ההתקן והבקר של LED משלך לשימוש ב- Ar
רמת חג המולד הרגישה לעץ חג המולד: 5 שלבים
עץ חג המולד הרגיש ברמת הסביבה: רוצה עץ חג המולד שמגיב לרמת הסביבה בסלון שלך? מה עם אחד שמאיר בקצב של שיר חג המולד האהוב עליך בלי צורך להריץ קלט שמע לעץ עצמו? מה עם עץ שמגיב ב
תיבת חג המולד: Arduino/ioBridge אינטרנט נשלט אורות חג המולד ומופע מוזיקה: 7 שלבים
קופסת חג המולד: אורות חג המולד ומופעי מוסיקה נשלטים על ידי Arduino/ioBridge: פרויקט קופסת חג המולד שלי כולל אורות ומופעי מוזיקה מבוקרים באינטרנט. ניתן לבקש שיר של חג המולד באופן מקוון, ולאחר מכן לשים אותו בתור ולהשמיע אותו לפי הסדר בו הוא התבקש. המוזיקה מועברת על נתון FM