جدول المحتويات:
فيديو: لعبة تخمين اللون عن بعد بالأشعة تحت الحمراء: 3 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
في هذا الدليل ، سأوضح لك كيفية التحكم في مصباح RGB باستخدام جهاز تحكم عن بعد IR ، وإخراج لعبة ممتعة منه!
الخطوة 1: الأجزاء المطلوبة
الأجزاء التي ستحتاجها لهذا المشروع هي:
- اردوينو ون RGB LED- مستشعر الأشعة تحت الحمراء
(يعتمد عدد المصابيح على اللعبة ، أو عدد الأرواح أو) - مصباحان أخضران - مصباح أصفر واحد - مصباح LED برتقالي - 3 مصابيح حمراء
الخطوة 2: الكود
#يشمل
int redPin = 10 ؛
int greenPin = 6 ؛ كثافة العمليات bluePin = 5 ؛
int levensPin1 = 8 ؛
int levensPin2 = 9 ؛ int levensPin3 = 12 ؛
int levelPin1 = 2 ؛
int levelPin2 = 3 ؛ int levelPin3 = 4 ؛ int levelPin4 = 7 ؛
عدد صحيح RECV_PIN = 11 ؛
IRrecv irrecv (RECV_PIN) ؛ نتائج decode_results ؛
// ألوان الإدخال
إدخال int = {-1 ، -1 ، -1} ، int color = {-1، -1، -1} ؛
int indexNumber = 0 ؛
مؤشر int indexColor = 0 ؛
int waarde = 0 ؛
رود int = 0 ؛
int groen = 0 ؛ int blauw = 0 ؛
// توليد الألوان
int roodRandom = 0 ؛ int groenRandom = 0 ؛ كثافة العمليات blauwRandom = 0 ؛
// متغيرات اللعبة
فرق كثافة العمليات = 200 ؛
مستوى int = 1 ؛
مستوى int = {-1 ، -1 ، -1 ، -1} ؛
int t = 0 ؛
مستوى كثافة العمليات 1 = 255 ؛
مستوى كثافة العمليات 2 = 0 ؛ المستوى 3 = 0 ؛ مستوى كثافة العمليات 4 = 0 ؛
يعيش int = 3 ؛
عدد الفتحات 1 = 255 ؛ عدد الفتحات 2 = 255 ؛ عدد الفتحات 3 = 255 ؛
int roodGok = 0 ؛
int groenGok = 0 ؛ int blauwGok = 0 ؛
الإعداد باطل() {
Serial.begin (9600) ؛ irrecv.enableIRIn () ، // بدء وضع pinMode لجهاز الاستقبال (redPin ، الإخراج) ؛ pinMode (greenPin ، الإخراج) ؛ pinMode (bluePin ، الإخراج) ؛
pinMode (levensPin1 ، الإخراج) ؛
pinMode (levensPin2 ، الإخراج) ؛ pinMode (levensPin3 ، الإخراج) ؛
}
حلقة فارغة() {
if (irrecv.decode (& results)) // تلقي الإشارات من جهاز التحكم عن بُعد {Serial.println (results.value، DEC) ؛ / / عرض الإشارات المستلمة من كل زر مضغوط Irecv.resume () ؛ // تلقي مفتاح الإشارة التالي (results.value) {// حوّل الإشارات إلى أرقام على الأزرار ، وعيّن الإجراءات للأزرار
الحالة 109562864:
addWaarde (1) ؛ استراحة؛
الحالة 109562824:
addWaarde (2) ؛ استراحة؛
الحالة 109562856:
addWaarde (3) ؛ استراحة؛
الحالة 109562872:
addWaarde (4) ؛ استراحة؛
الحالة 109562820:
addWaarde (5) ؛ استراحة؛
الحالة 109562852:
addWaarde (6) ؛ استراحة؛
الحالة 109562868:
addWaarde (7) ؛ استراحة؛
الحالة 109562828:
addWaarde (8) ؛ استراحة؛
الحالة 109562860:
addWaarde (9) ؛ استراحة؛
الحالة 109562876:
addWaarde (0) ؛ استراحة؛
الحالة 109562818: // oud ding enter / R CLK
handleInput () ؛ استراحة؛
القضية 109562816: // قوة قرع العود
مقبض اللون () ؛ استراحة؛ حالة 109562878: // oud ding cancell / L CLK resetColor () ؛ استراحة؛
القضية 109562866: // lege knop midden
لون عشوائي()؛ استراحة؛
القضية 109562830: // pijltje naar rechts
displayEverything () ، استراحة؛ الحالة 109562838: // esc case 109562822: // إعادة ضبط مصدر AVEverything () ؛ استراحة؛ }
// تعيين أزرار على جهاز التحكم عن بُعد للتحكم في اللون: بهذه الطريقة ، يمكن للاعبين رؤية شكل الألوان وكيفية دمجها ،
// قبل بدء اللعبة. التبديل (results.value) {حالة 109562840: rood = 255 ؛ استراحة؛
الحالة 109562844:
أخدود = 255 ؛ استراحة؛
الحالة 109562850:
blauw = 255 ؛ استراحة؛
الحالة 109562836:
رود = 0 ؛ أخدود = 0 ؛ blauw = 0 ؛ استراحة؛ }
}
analogWrite (redPin ، القيمة المطلقة (255 - رود)) ؛ // التحكم في RGB led: في الاتجاه المعاكس ، لأن المنجم سلكي في الاتجاه المعاكس.
analogWrite (greenPin ، القيمة المطلقة (255 - أخضر)) ؛ analogWrite (bluePin ، القيمة المطلقة (255 - blauw)) ؛
// التحكم في المصابيح الحية
إذا (يعيش == 2) {levens1 = 0 ؛ } إذا (يعيش == 1) {levens2 = 0 ؛ } إذا (يعيش == 0) {levens3 = 0 ؛ } analogWrite (levensPin1 ، levens1) ؛ analogWrite (levensPin2 ، levens2) ؛ analogWrite (levensPin3 ، levens3) ؛
// السيطرة على مستوى المصابيح
إذا (levelNumber == 1) {level1 = 255 ؛ } إذا (levelNumber == 2) {level1 = 255 ؛ المستوى 2 = 255 ؛ } إذا (levelNumber == 3) {level1 = 255 ؛ المستوى 2 = 255 ؛ المستوى 3 = 255 ؛ } إذا (levelNumber == 4) {level1 = 255 ؛ المستوى 2 = 255 ؛ المستوى 3 = 255 ؛ المستوى 4 = 255 ؛ } analogWrite (levelPin1، level1) ؛ analogWrite (المستوى 2 ، المستوى 2) ؛ analogWrite (المستوى 3 ، المستوى 3) ؛ analogWrite (المستوى 4 ، المستوى 4) ؛
}
void addWaarde (قيمة int) {// إضافة قيمة مضغوطة إلى القائمة
إذا (indexNumber == 3) {
إرجاع؛ }
إذا (المدخلات [indexNumber] == -1) {
المدخلات [indexNumber] = القيمة ؛ رقم الفهرس ++ ؛ }}
void handleInput () {// اجعل "waarde" (قيمة) من القائمة
waarde = القيمة المطلقة (الإدخال [0] * 100 + الإدخال [1] * 10 + الإدخال [2]) ؛ الإدخال [0] = -1 ؛ // إعادة تعيين مدخلات الإشارة [1] = -1 ؛ الإدخال [2] = -1 ؛
رقم الفهرس = 0 ؛
Serial.print ("waarde opgeslagen:") ؛ Serial.println (waarde) ؛ addColor (waarde) ؛ }
void addColor (int waarde) {// أضف "waarde" المكون من 3 أرقام إلى القائمة
إذا (indexColor == 3) {
إرجاع؛ }
إذا (اللون [indexColor] == -1) {
color [indexColor] = Waarde ؛ if (color [indexColor]> 255) {color [indexColor] = 255 ؛ } indexColor ++ ؛ }
}
void randomColor () {// اجعل الضوء يتحول إلى لون عشوائي واحفظه في المتغيرات
roodRandom = عشوائي (0 ، 255) ؛
groenRandom = عشوائي (0 ، 255) ؛
blauwRandom = عشوائي (0 ، 255) ؛
رود = roodRandom ؛
groen = عشوائي ؛ blauw = blauwRandom ؛ Serial.print ("roodRandom =") ؛ Serial.println (عشوائي عشوائي) ؛ Serial.print ("groenRandom =") ؛ Serial.println (groenRandom) ؛ Serial.print ("blauwRandom =") ؛ Serial.println (blauwRandom) ؛
}
void handleColor () {// حول "waarde" من القائمة إلى متغيرات "Gok" (تخمين)
roodGok = اللون [0] ، groenGok = اللون [1] ، blauwGok = اللون [2] ، // تحقق مما إذا كانت متغيرات Gok تختلف كثيرًا عن اللون العشوائي الحقيقي: إذا كان الأمر كذلك ، اعرض التخمين لمدة ثلاث ثوانٍ ، وامض باللون الأخضر وقم بتغيير اللون مرة أخرى ، أضف مستوى عبد اجعل الفرق المسموح به أصغر // إذا لم يكن كذلك ، اعرض تخمين لمدة ثلاث ثوانٍ ، وميض باللون الأحمر واستقطاع الحياة // إذا نفدت الحياة ، فستبدأ اللعبة مرة أخرى إذا (((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin ، القيمة المطلقة (255 - roodGok)) ؛ analogWrite (greenPin ، القيمة المطلقة (255 - groenGok)) ؛ analogWrite (bluePin ، القيمة المطلقة (255 - blauwGok)) ؛ تأخير (3000) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 0) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 0) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛
Serial.print ("roodGok =") ؛
Serial.println (roodGok) ؛ Serial.print ("groenGok =") ؛ Serial.println (groenGok) ؛ Serial.print ("blauwGok =") ؛ Serial.println (blauwGok) ؛ resetColor () ؛ لون عشوائي()؛ رقم المستوى ++ ؛ فرق - = 50 ؛ } else {analogWrite (redPin، abs (255 - roodGok)) ؛ analogWrite (greenPin ، القيمة المطلقة (255 - groenGok)) ؛ analogWrite (bluePin ، القيمة المطلقة (255 - blauwGok)) ؛ تأخير (3000) ؛ analogWrite (redPin ، 0) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛ analogWrite (redPin ، 0) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (300) ؛ Serial.print ("roodGok =") ؛ Serial.println (roodGok) ؛ Serial.print ("groenGok =") ؛ Serial.println (groenGok) ؛ Serial.print ("blauwGok =") ؛ Serial.println (blauwGok) ؛
resetColor () ؛
الأرواح--؛ } إذا (يعيش == 0) {analogWrite (redPin، 0) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (100) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (100) ؛ analogWrite (redPin ، 0) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (100) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (100) ؛ analogWrite (redPin ، 0) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (100) ؛ analogWrite (redPin ، 255) ؛ analogWrite (greenPin ، 255) ؛ analogWrite (bluePin ، 255) ؛ تأخير (100) ؛ resetEverything () ؛ }
}
void resetColor () {// استخدم لإعادة تعيين القيم ، أو لضغط خاطئ أو كل تخمين جديد (فقط من أجل اليقين)
اللون [0] = -1 ؛ اللون [1] = -1 ؛ اللون [2] = -1 ؛
رقم الفهرس = 0 ؛
indexColor = 0 ؛ }
إعادة تعيين باطل كل شيء () {// إعادة تشغيل اللعبة
اللون [0] = -1 ؛ اللون [1] = -1 ؛ اللون [2] = -1 ؛
رقم الفهرس = 0 ؛
indexColor = 0 ؛
يعيش = 3 ؛
رود = 0 ؛ أخضر = 0 ؛ blauw = 0 ؛
roodRandom = 0 ؛
العشوائية groenRandom = 0 ؛ blauwRandom = 0 ؛
ليفينز 1 = 255 ؛
ليفينز 2 = 255 ؛ ليفينز 3 = 255 ؛
المستوى 1 = 255 ؛
المستوى 2 = 0 ؛ المستوى 3 = 0 ؛ المستوى 4 = 0 ؛
رقم المستوى = 1 ؛
ر = 0 ؛
}
void displayEverything () {// استخدم هذا لعرض معلومات مهمة على الشاشة التسلسلية
Serial.print ("roodGok =") ؛ Serial.println (roodGok) ؛ Serial.print ("groenGok =") ؛ Serial.println (groenGok) ؛ Serial.print ("blauwGok =") ؛ Serial.println (blauwGok) ؛ Serial.print ("roodRandom =") ؛ Serial.println (عشوائي عشوائي) ؛ Serial.print ("groenRandom =") ؛ Serial.println (groenRandom) ؛ Serial.print ("blauwRandom =") ؛ Serial.println (blauwRandom) ؛
Serial.print ("rood =") ؛
Serial.println (رود) ؛ Serial.print ("groen =") ؛ Serial.println (أخضر) ؛ Serial.print ("blauw =") ؛ Serial.println (blauw) ؛
Serial.print ("waarde opgeslagen:") ؛
Serial.println (waarde) ؛ }
الخطوة 3: بناء
من الواضح أنك تريد بناء جميل لهذا المشروع. هذا الجزء مفتوح جدًا للتفسير ، ولكن هناك بعض الأشياء التي يجب وضعها في الاعتبار مع هذا: - حافظ على اللوحة الأمامية رقيقة ، بحيث لا يزال بإمكانك لصق مصابيح LED من خلالها ولا يزال مستقبل الأشعة تحت الحمراء يعمل
- احتفظ بمساحة كافية في الهيكل من أجل اردوينو ولوحة لحام
- تأكد من وجود فتحة في الخلف لقوة اردوينو
لقد أضفت مخططًا تقريبيًا للأسلاك.
حظا سعيدا واستمتع بوقتك!
موصى به:
ميزان حرارة يعمل بالأشعة تحت الحمراء لا يلامس من أردوينو - ميزان حرارة قائم على الأشعة تحت الحمراء باستخدام Arduino: 4 خطوات
ميزان حرارة يعمل بالأشعة تحت الحمراء لا يلامس من أردوينو | ميزان حرارة قائم على الأشعة تحت الحمراء باستخدام Arduino: مرحبًا يا رفاق في هذه التعليمات ، سنقوم بعمل مقياس حرارة بدون تلامس باستخدام اردوينو. نظرًا لأن درجة حرارة السائل / الصلب في بعض الأحيان تكون مرتفعة جدًا أو منخفضة ومن ثم يصعب الاتصال بها وقراءتها درجة الحرارة ثم في هذا المشهد
جهاز التحكم عن بعد بالأشعة تحت الحمراء للتحكم عن بعد أمازون إيكو: 11 خطوة (مع صور)
جهاز التحكم عن بعد بالأشعة تحت الحمراء للتحكم في Amazon Echo: يمكن لنظام Amazon Echo التحكم في الكثير من جوانب المنزل الذكي ، ولكن المنفذ الذكي لا يمكن إيقافه وتشغيله إلا. لا يتم تشغيل العديد من الأجهزة فورًا بمجرد توصيلها بالكهرباء وتتطلب خطوات إضافية ، مثل الضغط على الأزرار الموجودة بجهاز التحكم عن بُعد أو
جهاز تحكم عن بعد بالأشعة تحت الحمراء وجهاز استقبال الأشعة تحت الحمراء (TSOP1738) مع Arduino: 10 خطوات
جهاز التحكم عن بعد بالأشعة تحت الحمراء وجهاز استقبال الأشعة تحت الحمراء (TSOP1738) مع Arduino: هذا التوجيه مخصص للمبتدئين في Arduino. هذا أحد مشاريعي السابقة مع Arduino. لقد استمتعت كثيرًا عندما صنعتها وأتمنى أن تنال إعجابك أيضًا. الميزة الأكثر جاذبية لهذا المشروع هي "التحكم اللاسلكي". وهذا هو
كيف تصنع كاميرا تعمل بالأشعة تحت الحمراء بإضاءة LED بالأشعة تحت الحمراء: 5 خطوات (بالصور)
كيفية صنع كاميرا تعمل بالأشعة تحت الحمراء بإضاءة LED تعمل بالأشعة تحت الحمراء: لقد أدركت وجود كاميرا تعمل بالأشعة تحت الحمراء من أجل استخدامها في نظام التقاط الحركة. باستخدامه يمكنك أيضًا الحصول على هذا النوع من الصور الرائعة: أشياء لامعة في رؤية الكاميرا طبيعية في الواقع. يمكنك الحصول على نتائج جيدة بسعر رخيص
تحكم في أجهزتك الكهربائية باستخدام جهاز التحكم عن بعد الخاص بالتلفزيون (جهاز التحكم عن بعد بالأشعة تحت الحمراء) مع عرض درجة الحرارة والرطوبة: 9 خطوات
تحكم في أجهزتك الكهربائية باستخدام جهاز التحكم عن بعد في التلفزيون (جهاز التحكم عن بعد بالأشعة تحت الحمراء) مع شاشة عرض درجة الحرارة والرطوبة: مرحبًا ، أنا أبهاي وهي أول مدونة لي على Instructables واليوم سأوضح لك كيفية التحكم في أجهزتك الكهربائية باستخدام جهاز التحكم عن بعد الخاص بالتلفزيون عن طريق بناء هذا مشروع بسيط. بفضل مختبر atl لدعمه وتوفير المواد