סיימון: כפתורים וצלילים
חלק מהיחידה פרויקטים במסלול ה-Arduino של Coddy. שיעור 13 מתוך 24.
Simon הוא משחק זיכרון: הלוח מציג רצף של אורות צבעוניים וצלילים, ואתם חוזרים עליו באמצעות הכפתורים. בכל סיבוב הרצף מתארך באחד, עד שטועים. יש ארבעה צבעים, ולכל אחד כפתור, נורית LED וצליל.
כשיש ארבעה מכל דבר, מערכים שומרים על הקוד קצר. האיבר 0 בכל מערך הוא אדום, 1 הוא ירוק, 2 הוא כחול ו-3 הוא צהוב, כך שמספר אחד, i, מציין צבע בכל מקום:
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};לולאת for בודקת את כל ארבעת הכפתורים. פעלו בשני רגעים: כפתור נלחץ (LOW עכשיו, HIGH בפעם הקודמת) ומשתחרר (HIGH עכשיו, LOW בפעם הקודמת). המערך lastState שומר את הקריאה האחרונה של כל כפתור. בשלבים הבאים לחיצה נספרת כשהכפתור משתחרר. הכפתורים האלה לא מרעישים, לכן בדיקות הקצוות מספיקות.
אתגר
בינוניגרום לארבעת הצבעים לנגן:
- ב־
setup(), לולאתforמגדירה את פיני ה־LED כיציאות ואת פיני הכפתורים כ־INPUT_PULLUP - כשלוחצים על הכפתור
i, הדלק אתledPins[i]ונגן אתnotes[i]בפין 8 - כשמשחררים אותו, כבה את ה־LED וקרא ל־
noTone()
לחץ על Run, נגן בכפתורים ואז לחץ על Check.
נסו בעצמכם
// ערך אחד לכל צבע: אדום, ירוק, כחול, צהוב
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // C, E, G ו-C גבוה
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // הקריאה האחרונה של כל כפתור
void setup() {
// נורות ה-LED הן יציאות, והכפתורים מוגדרים כ-INPUT_PULLUP
}
void loop() {
// עבור כל כפתור: כשהוא נלחץ, הדלק את נורת ה-LED שלו ונגן את הצליל שלו;
// כשהוא משתחרר, כבה את שניהם
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פרויקטים
תרגלו בעצמכם: Arduino אונליין