جدول المحتويات:
- الخطوة 1: الأشياء المستخدمة في هذا المشروع
- الخطوة 2: توصيل الأجهزة
- الخطوة الثالثة: برمجة البرمجيات
- الخطوة 4: العملية
فيديو: ضوء بهجة موسيقى الكريسماس: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
عيد ميلاد مجيد! هل ترغب في الحصول على شجرة عيد الميلاد يمكنها التفاعل معك؟
الخطوة 1: الأشياء المستخدمة في هذا المشروع
مكونات الأجهزة
- Seeeduino V4.2
- قاعدة درع V2.0
- جروف - مستشعر حركة PIR قابل للتعديل
- جروف - مستشعر جهارة الصوت
- Grove - WS2813 RGB LED Strip مقاوم للماء - 60 LED / m - 1m
تطبيقات البرمجيات والخدمات عبر الإنترنت
اردوينو IDE
الخطوة 2: توصيل الأجهزة
قم بتوصيل مستشعر PIR ومستشعر ارتفاع الصوت وشريط LED بمنفذ Base Shield D2 و A0 و D6 بشكل منفصل. قم بتوصيل Base Shield بـ Seeduino ، كل ذلك انتهى.
الخطوة الثالثة: برمجة البرمجيات
تحتاج المكتبات التالية إلى التثبيت قبل البرمجة ، يرجى تنزيلها واستيرادها إلى Arduino IDE يدويًا:
- Led_Strip
- MsTimer2
- اردوينو فيكتور
من أجل جعل الكود أكثر إيجازًا ، قمنا بتعبئته. فئة CheerLight هي فئة التطبيق لهذا المشروع.
تطبيق فئة:: CheerLight
: public application:: interface:: IApplication {public: void setup (void)؛ حلقة باطلة (باطلة) ؛ مجموعة باطلة PIRSensorPin (uint8_t pin) ؛ باطل setLoudnessSensorPin (uint8_t pin) ؛ قياس باطل تغيير باطل تغيير سرعة باطلة (صفحات * باطلة) ؛ تغيير لون باطل (باطل * أرغس) ؛ تطبيق ثابت:: CheerLight * getInstance (باطل) ؛ محمي: سائق:: LEDStrip _ledStrip ؛ سائق:: PIRSensor _pirSensor ؛ سائق:: LoudnessSensor _loudnessSensor ؛ uint8_t _animation ؛ برمجية وسيطة:: مفوض _detectedDelegate؛ الوسيطة:: مفوض _absoluteLoudnessDelegate ؛ الوسيطة:: مندوب _relativeLoudnessDelegate ؛ CheerLight (باطل) ؛ تطبيق ثابت:: CheerLight _instance ؛ } ؛
تم تصميم فئة CheerLight بواسطة Singleton Patterns ، مما يعني أنه يوجد مثيل واحد فقط لها ، يمكنك استدعاء CheerLight:: getInstance () لهذا المثال. إذا كان اتصال أجهزة الاستشعار لديك مختلفًا عن اتصال الأجهزة ، فيمكنك تغييرها عن طريق استدعاء أساليب setPIRSensorPin () و setLoudnessSensorPin ().
نوصي باستدعاء طريقة MeasSensors () في مقاطعة المؤقت لجعل المستشعرات تقاس في الوقت المناسب ، لكن استدعاء طرق changeAnimation () أو changeSpeed () أو changeColor () يدويًا ليست ضرورية. سيتم الاتصال بهم عبر المندوبين عند قياس أجهزة الاستشعار.
ما هو المندوب؟
كما نعلم جميعًا ، يمكننا أن نعلن عن مؤشر دالة ونجعله يشير إلى دالة في لغة C:
func1 باطل (باطل) ؛
باطل (* pFunc) (باطل) = func1 ؛
واستخدمها لاستدعاء الوظيفة التي أشارت إليها
pFunc () ،
ولكن هناك اختلافات في C ++ ، إذا حاولت تجميع الكود التالي لأسفل:
فئة أ {
عام: func1 باطل (باطل) ؛ } ؛ void (* pFunc) (void) = & A:: func1؛
سيقوم المترجم بالإبلاغ عن خطأ تحويل نوع ، وهنا المثال الصحيح:
void (A:: * pFunc) (void) = & A:: func1؛
عندما نحاول استخدامه لاستدعاء تلك الطريقة ، حدث خطأ مرة أخرى. سبب هذا الخطأ هو أنه يجب استدعاء طريقة الكائن بواسطة كائن. لذلك أنشأنا كائنًا نسميه:
أ أ ؛
أ. * pFunc () ؛
هذه المرة لا مشكلة. لذلك هناك فئة المندوبين في المندوب. h.
نموذج
البرامج الوسيطة للفئة:: المندوب: البرنامج الوسيط العام:: الواجهة:: IDelegate {public: التفويض (T * object، void (T:: * method) (void *))؛ استدعاء باطل (void * args) ؛ محمي: T * _object ؛ باطل (T:: * _ طريقة) (باطل *) ؛ } ؛ البرمجيّة الوسيطة المضمنة للقالب:: المندوب:: المندوب (كائن T * ، باطل (طريقة T:: *) (void *)): _object (كائن) ، _method (طريقة) {} نموذج مضمّن وسيط باطل:: مفوض:: استدعاء (* void * args) {(_object -> * _ method) (args) ؛ }
نظرًا لأن فئة المندوبين عبارة عن فئة قالب ، مما يعني أن المندوب هو اختلاف عن المندوب ، فكيف يمكن الإشارة إليها بمؤشر لها نفس النوع؟ الجواب هو الواجهة ، لذلك هناك واجهة IDelegate في IDelegate.h.
class middleware:: interface:: IDelegate {
عام: استدعاء الفراغ الظاهري (باطل * أرغس) = 0 ؛ } ؛
في فئة مستشعر PIR ومستشعر ارتفاع الصوت ، يوجد متغير يسمى _delegates يُستخدم لتخزين مؤشر المندوبين ، وهناك طريقة تسمى invokeAllDelegates () تُستخدم لاستدعاء جميع المندوبين في _delegates ، وسيتم استدعاؤها في طريقة القياس ().
ملاحظة: سيتم استدعاء أساليب التفويض ، مثل changeAnimation () و changeSpeed () و changeColor () في المقاطعة timer2 ، لذلك لا تستخدم التأخير () أو أي وظيفة أخرى قائمة على المقاطعة.
موصى به:
ضوء الكريسماس: 4 خطوات
ضوء الكريسماس: الكريسماس هو أحد عطلاتي المفضلة ، الثلج ، الأضواء ، سانتا ، الهدايا! أنه لأمر مدهش تماما. حلمي هو أن أرى الثلج خلال عيد الميلاد ، مع كل الأضواء الملونة في الثلج. لذا ، في هذا المشروع ، سأوضح لك كيفية إضافة مصابيح LED إلى
ضوء شجرة الكريسماس المتحكم به بواسطة لعبة: 12 خطوة (بالصور)
ضوء شجرة الكريسماس الذي تسيطر عليه لعبة: صانعي التحيات! عيد الميلاد ورأس السنة الجديدة قادمون. إنه يعني مزاج احتفالي وهدايا ، وبالطبع شجرة عيد الميلاد مزينة بأضواء زاهية الألوان بالنسبة لي ، فإن أضواء شجرة عيد الميلاد في الأسواق الجماعية مملة للغاية. لإرضاء الأطفال ، قمت بعمل C
مستشعر تأثير القاعة: صندوق موسيقى الكريسماس: 4 خطوات
مستشعر تأثير القاعة: صندوق موسيقى الكريسماس: هذا صندوق موسيقى يقوم بتشغيل الموسيقى بمجرد فتحه (شاهد الفيديو!). إنها طريقة رائعة ومميزة وفريدة من نوعها لتغليف هداياك لشخص مميز! يستخدم مستشعر تأثير القاعة للتحقق مما إذا كان الغطاء مفتوحًا بسبب عدم وجود مجال مغناطيسي أ
استخدم القوة لنشر بهجة العيد!: 5 خطوات
استخدم القوة لنشر بهجة العطلة!: سيوضح لك هذا Instructable كيفية إنشاء شجرة عيد الميلاد على سطح المكتب من اللوازم المكتبية ، وإضافة وحدة تحكم صغيرة ومصابيح LED قابلة للعنونة بشكل فردي ، ثم استخدام Sphero Force Band (تم إصداره مع الجيل الثاني من Sphero BB -8 droid) إلى tur
ESP8266 / Arduino RGB LED زينة نافذة ضوء الكريسماس: 5 خطوات (مع صور)
ESP8266 / Arduino RGB LED زينة نافذة ضوء عيد الميلاد: إنه ذلك الوقت من العام: ديسمبر. وفي الحي الذي أقيم فيه ، يزين الجميع منزلهم ونوافذهم ببعض أضواء عيد الميلاد. هذه المرة ، قررت إنشاء شيء مخصص وفريد من نوعه باستخدام وحدة ESP8266 واثنين فقط من مصابيح RGB LED. أنت ج