Menu
CoddyTech
flag Ar iconالعربيةdown icon

سايمون: الأزرار والنغمات

جزء من قسم المشاريع في رحلة Arduino على Coddy. الدرس 13 من 24.

سيمون لعبة ذاكرة: تعرض اللوحة نمطًا من الأضواء الملوّنة والنغمات، وتكرره باستخدام الأزرار. في كل جولة، يزداد النمط بمقدار واحد حتى ترتكب خطأً. هناك أربعة ألوان، لكل منها زر ومصباح LED ونغمة.

عندما يكون لدينا أربعة من كل شيء، تجعل المصفوفات الشيفرة قصيرة. العنصر 0 في كل مصفوفة هو الأحمر، و1 هو الأخضر، و2 هو الأزرق، و3 هو الأصفر، لذا فإن رقمًا واحدًا، i، يحدد لونًا في كل مكان:

const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};

تتحقق حلقة for من الأزرار الأربعة كلها. تصرّف عند لحظتين: عندما يُضغط الزر (تكون القراءة الآن LOW، وكانت HIGH في المرة السابقة)، وعندما يُترك (تكون القراءة الآن HIGH، وكانت LOW في المرة السابقة). تحتفظ المصفوفة lastState بآخر قراءة لكل زر. في الخطوات اللاحقة، يُحتسب الضغط عند ترك الزر. هذه الأزرار لا ترتد، لذا تكفي فحوصات الحواف.

challenge icon

التحدي

متوسط

اجعل الألوان الأربعة تُصدر أصواتًا:

  • في setup()، تجعل حلقة for دبابيس LED مخارج، وتجعل دبابيس الأزرار INPUT_PULLUP
  • عند الضغط على الزر i، أضئ ledPins[i] وشغّل notes[i] على الدبوس 8
  • عند تحريره، أطفئ LED واستدعِ noTone()

اضغط على Run، وجرّب الأزرار، ثم اضغط على Check.

جرّب بنفسك

// عنصر واحد لكل لون: أحمر، أخضر، أزرق، أصفر
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};  // C وE وG وC المرتفعة
const int buzzerPin = 8;

int lastState[4] = {HIGH, HIGH, HIGH, HIGH};  // آخر قراءة لكل زر

void setup() {
  // مصابيح LED هي مخارج، والأزرار تستخدم INPUT_PULLUP

}

void loop() {
  // لكل زر: عند الضغط عليه، أضئ مصباح LED الخاص به وشغّل نغمته؛
  // عند تحريره، أطفئ المصباح وأوقف النغمة

}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المشاريع

تدرّب بنفسك: Playground لـ Arduino