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

التبديل عند كل ضغطة

جزء من قسم المدخلات في رحلة Arduino على Coddy. الدرس 4 من 22.

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

للتبديل، يجب أن تلاحظ الشيفرة اللحظة التي يُضغط فيها الزر: مضغوط الآن، لكنه لم يكن مضغوطًا في المرة السابقة التي نُفّذت فيها loop(). تُسمّى تلك اللحظة حافة. احتفظ بالقراءة السابقة في متغير أعلى setup()، مثل العداد:

int lastReading = HIGH;

void loop() {
  int reading = digitalRead(2);
  if (reading == LOW && lastReading == HIGH) {
    // تم الضغط على الزر
  }
  lastReading = reading;
}

عند الاستمرار في الضغط على الزر، تظل القراءة LOW، لذا تحدث الحافة مرة واحدة لكل ضغطة، مهما طالت مدة الضغط.

لقلب قيمة bool، استخدم !، التي تعني «ليس»: ledOn = !ledOn; تحوّل true إلى false والعكس.

challenge icon

التحدي

متوسط

الزر موصول بالمنفذ 2 (INPUT_PULLUP) ومصباح LED بالمنفذ 13. اجعل كل ضغطة تبدّل حالة مصباح LED:

  • عند ضغط الزر (LOW الآن، وHIGH في المرة السابقة)، بدّل ledOn
  • احفظ القراءة في lastReading في نهاية loop()
  • شغّل مصباح LED أو أطفئه ليتوافق مع ledOn

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

جرّب بنفسك

const int buttonPin = 2;
const int ledPin = 13;

bool ledOn = false;
int lastReading = HIGH;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int reading = digitalRead(buttonPin);
  // اعكس قيمة ledOn عند الضغط على الزر
  // احفظ هذه القراءة للمرة القادمة
  // شغّل LED أو أطفئه ليتوافق مع ledOn
}
quiz iconاختبر نفسك

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

جميع دروس المدخلات

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