Menu
CoddyTech

לזכור את המצב

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

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

int mode = 0;   // 0 = כבוי, 1 = מהבהב

חלקו את loop() לשניים. ראשית, הקלטים משנים רק את המצב. לאחר מכן, שאר הלולאה עושה את מה שהמצב אומר:

// 1. הקלטים משנים את המצב
if (digitalRead(blinkButton) == LOW) {
  mode = 1;
}

// 2. המצב קובע מה יקרה
if (mode == 1) {
  // הבהב באמצעות millis()
} else {
  digitalWrite(ledPin, LOW);
}

כל מספר מייצג דבר אחד שהסקץ׳ יכול לעשות. כתבו בהערה מה המשמעות של כל מספר. לסקץ׳ יכולים להיות כמה מצבים שהוא צריך: 0, 1, 2, 3 ועוד.

challenge icon

אתגר

קל

הכפתור הירוק מחובר לפין 2 והאדום לפין 3.

  • הירוק מגדיר את mode ל־1, והאדום מגדיר אותו ל־0
  • כאשר mode הוא 1, הנורית בפין 13 מהבהבת באמצעות millis(), דולקת למשך 500 ms וכבויה למשך 500 ms
  • כאשר mode הוא 0, הנורית כבויה

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

נסו בעצמכם

const int ledPin = 13;
const int blinkButton = 2;   // ירוק
const int offButton = 3;     // אדום

int mode = 0;   // 0 = כבוי, 1 = מהבהב

unsigned long previousMillis = 0;
int ledState = LOW;

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

void loop() {
  // 1. הכפתורים רק משנים את המצב

  // 2. לאחר מכן פועלים לפי המצב
}
quiz iconבחנו את עצמכם

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

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

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