Menu
CoddyTech

נורית עם טיימר

חלק מהיחידה תזמון ללא Delay במסלול ה-Arduino של Coddy. שיעור 6 מתוך 18.

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

לשם כך צריך שני דברים: את מועד הלחיצה האחרונה, והאם האור דולק. שומרים את המועד במשתנה מסוג unsigned long כשהכפתור לחוץ:

if (digitalRead(buttonPin) == LOW) {
  pressedAt = millis();     // התחל (או התחל מחדש) את מדידת הזמן
  lightOn = true;
  digitalWrite(ledPin, HIGH);
}

לאחר מכן, בכל לולאה, בודקים כמה זמן עבר:

if (lightOn && millis() - pressedAt >= onTime) {
  lightOn = false;
  digitalWrite(ledPin, LOW);
}

שני החלקים אף פעם לא ממתינים, ולכן הלחיצה מזוהה בכל רגע, גם כשהאור כבר דולק. אם מוסיפים delay(2000) אחרי הלחיצה, לחיצה שנייה בזמן ההמתנה תלך לאיבוד.

challenge icon

אתגר

קל

בנו תאורת מדרגות:

  • לחיצה מדליקה מיד את ה-LED בפין 13
  • 2 שניות לאחר הלחיצה, היא נכבית מעצמה
  • לחיצה כשהיא דולקת מתחילה מחדש את 2 השניות

לחצו על Run, לחצו על הכפתור כמה פעמים, ואז על Check.

נסו בעצמכם

const int ledPin = 13;
const int buttonPin = 2;
const unsigned long onTime = 2000;   // משך הזמן שהנורה נשארת דולקת

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

void loop() {
  // כשהכפתור לחוץ: הדלק את ה-LED ושמור את הזמן

  // כשחלף מאז פרק הזמן onTime: כבה את ה-LED
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה תזמון ללא Delay

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