Menu
CoddyTech

החלפת מצב בכל לחיצה

חלק מהיחידה קלטים במסלול ה-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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה קלטים

תרגלו בעצמכם: Arduino אונליין