החלפת מצב בכל לחיצה
חלק מהיחידה קלטים במסלול ה-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, ולהפך.
אתגר
בינוניהכפתור מחובר לפין 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
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה קלטים
תרגלו בעצמכם: Arduino אונליין