جدول المحتويات:
فيديو: هابي هاك لايت سويتش: 3 خطوات
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
خلال الأسبوعين الماضيين ، عملنا على مشروع مدرسي يسمى "Happy hacking". مع هذا المشروع ، حاولنا عمل "اختراق سعيد" لمساحة عامة. حسنًا ، ما هو "الاختراق السعيد"؟ في حالتنا ، كنا بحاجة إلى صنع شيء إيجابي بناءً على الإحباط. كان استخدام Arduino مطلوبًا لهذا المشروع. "الاختراق السعيد" الذي قررنا إجراؤه كان عبارة عن تثبيت لقلب مفتاح الضوء عن بُعد.
الخطوة 1: المواد:
1x أردوينو أونو
1x اللوح
مضاعفات 2x
1x مستشعر الأشعة تحت الحمراء
11x سلك
1x مرسل الأشعة تحت الحمراء (إزالة التلفزيون)
شريط
الخطوة الثانية: كيفية الاتصال:
ضع مستقبل الأشعة تحت الحمراء من Arduino في اللوح ؛ بافتراض أن الجانب الأمامي من جهاز الاستقبال هو الجانب الذي توجد به الكرة:
- قم بتوصيل سلك واحد من "الساق" في أقصى اليسار بمنفذ Uno لـ Arduino "6".
- قم بتوصيل سلك واحد من "الساق" الوسطى إلى الصف "-" في اللوح.
- قم بتوصيل سلك من أقصى "الساق" اليمنى بصف "+" في اللوح.
تأكد من وجود السلك بين الصف "-" في اللوح والمنفذ "الأرضي" على Arduino uno وتأكد من وجود سلك بين الصف "+" في اللوح والمنفذ "5V" في Arduino uno.
الآن قم بتوصيل 2 الماكينات ،
- كلاهما بسلك من أحلك سلك في المؤازرة إلى الصف "-" على اللوح.
- كلاهما بسلك من السلك الأوسط في المؤازرة إلى الصف "+" على اللوح.
الآن ، بالنسبة لإحدى الماكينات ، قم بتوصيل سلك المؤازرة المتبقي بمنفذ Arduino uno "9" وقم بتوصيل المؤازرة الأخرى بمنفذ Arduino uno "10".
الخطوة الثالثة: الكود:
#يشمل //
#يشمل //
#يشمل //
IRrecv irrecv (6) ؛
نتائج decode_results ؛
أجهزة theServo1 ؛
مضاعفات theServo2 ؛
lightOn منطقية = خطأ ؛
منطقية ديسكو = خطأ ؛
الإعداد باطل(){
theServo1.attach (10) ،
theServo2.attach (9) ،
pinMode (6 ، الإدخال) ؛
Serial.begin (9600) ؛
irrecv.enableIRIn () ، // ابدأ جهاز الاستقبال
irrecv.blink13 (صحيح) ؛
}
حلقة فارغة(){
if (irrecv.decode (& results)) {
Serial.println (results.value) ؛ // تحصل على نتيجة مختلفة لكل زر. لذا تحقق في الشاشة التسلسلية من قيمة الأزرار.
if (results.value == 3772793023) {// هذه نتيجة زر الطاقة (3772793023). ربما يكون هذا مختلفًا مع جهاز التحكم عن بُعد.
lightOn =! lightOn ؛
إذا (lightOn) {
theServo1.write (65) ؛
theServo2.write (15) ،
}
إذا (! lightOn) {
theServo1.write (95) ،
theServo2.write (95) ،
}
تأخير (1000) ؛
}
if (results.value == 3772839943) {// هذه نتيجة زر المعلومات (37728).
ديسكو =! ديسكو؛
تأخير (1000) ؛
}
Serial.println (results.value) ؛
irrecv.resume () ؛ // تلقي القيمة التالية
}
إذا (ديسكو) {
lightOn =! lightOn ؛
إذا (lightOn) {
theServo1.write (65) ؛
theServo2.write (15) ،
}
إذا (! lightOn) {
theServo1.write (95) ،
theServo2.write (90) ،
}
تأخير (2000) ؛
}
}