תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
פרויקטים של טינקרד »
זוהי גרסת LED למשחק הקלאסי Whack-a-Mole.
בעיקרון נורית אקראית מתוך 4 נוריות נורות נדלקת במקום שומה שמסתכלת מתוך חור והשחקן מכבה את הנורית באמצעות ג'ויסטיק במקום לדפוק את השומה!
אספקה
Arduino Uno/Nano או כל לוח גרסא
4 נוריות LED ונגדי הגבלת זרם תואמים.
מודול ג'ויסטיק עם יציאות X, Y
זמזם פעיל (אופציונלי)
חוטי מגשר.. מספיק כדי לאתר באגים!
שלב 1: חבר את המעגל
חבר את לוח ה- Arduino Uno למודול הג'ויסטיק, וחיבר 2 סיכות כניסה אנלוגיות ליציאות X Y של הג'ויסטיק.
4 נוריות LED לחיבור באמצעות נגדים ל -4 סיכות סיכות פלט דיגיטליות או אנלוגיות.
זמזם פעיל לחיבור לפין פלט דיגיטלי
שלב 2: קוד להגדרת סיכות
int xVal = 0, yVal = 0, butVal = 0, xPin = A0, yPin = A1, joyPin = 13, butPin = 7, speakerPin = 9;
int leftLED = A2, rightLED = A3, topLED = A4, bottomLED = A5;
int selectedLED = 0; // יכול להיות אחד מ- A2, A3, A4 או A5
הגדרת בטל () {
pinMode (xPin, INPUT);
pinMode (yPin, INPUT);
pinMode (leftLED, OUTPUT);
pinMode (rightLED, OUTPUT);
pinMode (topLED, OUTPUT); pinMode (bottomLED, OUTPUT);
pinMode (joyPin, OUTPUT);
pinMode (buzzerPin, OUTPUT);
}
שלב 3: קוד לחישת ג'ויסטיק
ג'ויסטיק חלל SenseRoutine ()
{
xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin (xVal, yVal, butVal);
analogWrite (selectedLED, 1024);
if (selectedLED! = leftLED) {analogWrite (leftLED, 0); } if (selectedLED! = rightLED) {analogWrite (rightLED, 0); }
if (selectedLED! = topLED) {analogWrite (topLED, 0); }
if (selectedLED! = bottomLED) {analogWrite (bottomLED, 0); }
אם (joyPin == selectedLED) // Mole Whacked
{
analogWrite (selectedLED, 0);
//
// הוסף קוד לנגינת מוסיקה/טון לחבילות moLED !!
//
}
}
int mapXYtoPin (int xVal, int yVal, int butVal) {if ((xVal <100) ו- (yVal 400)) {return bottomLED; }
אחרת אם ((xVal> 900) ו- (yVal 400)) {return topLED; }
אחרת אם ((xVal 400) ו- (yVal <100)) {return leftLED; }
אחרת אם ((xVal 400) ו- (yVal> 900)) {return rightLED; }
אחרת {החזרה -1; }
}
שלב 4: קוד שגרה בלולאה ראשית
לולאת חלל () {
עבור (int i = 0; i <length; i ++)
{
if (אקראי (0, 100)> 90) {selectedLED = anaPinMap (אקראי (2, 6));}
// הוסף כאן קוד למוזיקת משחקים
// *** *** ***
//
}
int anaPinMap (int randNum) {
אם (randNum == 2) {החזרה A2; }
אחרת אם (randNum == 3) {החזר A3; }
אחרת אם (randNum == 4) {החזר A4; }
אחרת אם (randNum == 5) {החזרה A5; }
}
שלב 5: מוכן להתנסות
שלב 6: יישום Arduino Nano לאב -טיפוס
אותו יישום שנעשה עם Arduino nano בלוח לחם, לוח בהזמנה אישית עם נוריות LED, נגדים וזמזם ומתג ג'ויסטיק X-Y.
שלב 7: אב טיפוס אחרון של Whack-a-MoLED ארוז כדי להציג את אהובך
ציוד לאב טיפוס:
קופסת קרטון פשוטה (מינימום 4 ס"מ X 6 ס"מ X 3 ס"מ), חתיכות קרטון נוספות לתמיכה.
נייר דקורטיבי לכיסוי שלדה (אופציונלי)
דבק/דבק רב תכליתי
קרש לחם מיני (אופציונלי)
ארדואינו ננו
PCB אוניברסלי קטן
סוללת 9V להפעלת Arduino nano (להתחבר לפין Vin).
מתג SPDT
שאר הציוד (נוריות LED, נגדים, ג'ויסטיק, זמזם, חוטים) כמתואר בשלב 1 לעיל.