תוכן עניינים:

ארגז פאזל ארדואינו: 7 שלבים
ארגז פאזל ארדואינו: 7 שלבים

וִידֵאוֹ: ארגז פאזל ארדואינו: 7 שלבים

וִידֵאוֹ: ארגז פאזל ארדואינו: 7 שלבים
וִידֵאוֹ: יצירת פאזל מקוון בשניות-מידע נוסף ב"ארגז הכלים למורה המקוון" 2024, יולי
Anonim
קופסת פאזל ארדואינו
קופסת פאזל ארדואינו

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

אספקה

1 x ארדואינו אונו

1 x 1k אוהם אוהם

נגדים 5 x 220 אוהם

1 זמזם פיז'ו

כפתור 5 x 6x6 מ מ

1 x סט חוטי מגשר

1 x לוח perf/strip

1 x מכרז

1 x ציר

1 x מהדק

1 x שידה קטנה/עץ

1x אקדח דבק חם + מקלות דבק

1 x סוללת 9v + מחזיק

קצת וורבלה

צֶבַע

שלב 1:

תמונה
תמונה

ראשית עליך ללחוץ על הסיכות שלך בלוח הלחם. כעת חבר את האנלוגי 2 עם חוט לפינת הלוח. אנו הולכים לחבר אליו שני נגדים בשורה. הראשון הוא נגד 10k Ohm. לקצה השני של הנגד הזה אנו מחברים חוט לאדמה האנלוגית. הנגד השני הוא נגד 220 אוהם שאנו מחברים לכפתור הראשון. השתמש בנגד אחר בעל אותו ערך על מנת לחבר את הצד הפתוח השני של הכפתור עם הכפתור השני. המשך לחבר את הכפתורים כך עד האחרון. בחלק האחרון אתה תופס חוט ומחבר אותו לצד סגור המתאים של הכפתור ומחבר אותו לחלק הבא בתור. כעת אתה חוזר על התהליך שעשית עם הנגדים שאתה יודע רק עם חוטים רגילים. חבר את הכפתור הראשון ליציאת 3, 3V האנלוגית ב- Arduino שלך. בסך הכל תקבל סוג של דוגמת צלב כפי שמתואר להלן.

שלב 2:

לאחר מכן חבר את הזמזם ללוח הלחם ואבטח צד אחד לקרקע הדיגיטלית והשני ליציאת 12. חכם כבר להעלות את הקוד הבא לארדואינו כדי שתוכל לבדוק אם הכל פועל כראוי. אם זה אתה יכול להתחיל להלחם את הרכיבים יחד. עשו זאת על ידי הוצאתם מלוח הלחם והלחמת החוטים והחיבורים יחד ישירות. אם אתה חושב שאתה צריך יותר אורך בין הכפתורים אתה יכול להוסיף חוט נוסף בין הנגדים. בשלב זה כבר אין צורך בלוח הלחם.

שלב 3:

תמונה
תמונה

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

שלב 4:

תמונה
תמונה
תמונה
תמונה

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

שלב 5:

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

שלב 6:

עכשיו כשהקופסה שלך שלמה כל שעליך לעשות הוא להכניס את הארדואינו והסוללה לתוכו ולסגור את המכסה.

שלב 7: קוד

// זהו הקוד של תיבת פאזל/מוזיקה בנושא זלדה.

// זה מחבר את הקוד שלך לרשימת ההערות בכרטיסיה האחרת

#כלול "pitches.h"

// משתנה זה יבטיח שהארדואינו יראה לחיצה ארוכה יותר על הכפתור כחיצה אחת בלבד

int אותו = 0;

// מכאן הוא יקרא את הקלט שלך

int k = 2;

// זהו סיכת הפלט שלך

רמקול int = 12;

// להלן מנגינות הסיום

int Zelda = {NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A5, NOTE_G5, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_A;

int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};

int Epona = {NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_A4};

int EponaTime = {4, 4, 1.5, 4, 4, 1.5, 4, 4, 2, 2, 1};

int Saria = {NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_E5, NOTE_D5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4;

int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};

// משך הזמן הרגיל של פתק

int BATTIME = 300;

// הדלפק שעומד לעקוב אחריו אם היינו בפתרון

int teller = 0;

הגדרת בטל () {

Serial.begin (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

לולאת חלל () {

// קורא את הקלט מהסיכות

k = analogRead (2);

int p = analogRead (1);

// אם אין לחיצה על כפתור לא אמור להיות צליל

אם (טלר == 0) {

noTone (12);

}

// אם נתוני הקריאה מתאימים לפרמטרים הפעל את קוד הקוד המתואר

אם (k> 320 && k <350) {

rechts ();

}

//""

אחר אם (k 290) {

קישורים ();

}

//""

אחרת אם (k> 260 && k <280) {

boven ();

}

//""

אחרת אם (k> 240 && k <260) {

onder ();

}

//""

אחרת אם (k> 220 && k <240) {

א();

}

// אם לא (כאשר אין לחיצה על כפתור), הפעל קוד זה

אחר {

// אפס אותו כך שניתן יהיה להשתמש בו בפעם הבאה שתלחץ על כפתור

אותו = 0;

// אם המונה מגיע למספר מסוים הפעל את קוד הקוד המתואר

אם (מספר == 166) {

זלדה ();

}

//""

אחרת אם (טלר == 386) {

סאריה ();

}

//""

אחרת אם (טלר == 266) {

epona ();

}

//""

אחרת אם (טלר == 999) {

// השמע צליל זה כדי לסמן את השגיאה

צליל (רמקול, NOTE_C3, BEATTIME);

// אפס את המונה ל -0

מספר = 0;

}

}

// העיכוב בין קלט לפלט

עיכוב (100);

// מדפיסה את ערכי הקלט שלך במסך הטורי

Serial.println (k);

}

// זו הלחן הראשון

zelda void () {

// זה קובע מונה שמעדכן את עצמו בזמן השמעת המנגינה כך שיוכל לקרוא אותו ולעצור מתי שצריך

for (int i = 0; i <sizeof (Zelda); i ++) {

// אומר כמה זמן פתק צריך להימשך

int ZTime = 1000 / ZeldaTime ;

// מייצר את הצלילים

טון (רמקול, זלדה , ZTime);

// יוצר את העיכוב הנכון

int pause = ZTime * 1.30;

עיכוב (הפסקה);

// מאפס מונה

מספר = 0;

// מדפיסה את ערכי הקלט שלך במסך הטורי

Serial.println (מספר);

}

}

//""

חלל epona () {

for (int i = 0; i <sizeof (Epona); i ++) {

int ETime = 1000 / EponaTime ;

טון (רמקול, Epona , ETime);

int pause = ETime * 1.30;

עיכוב (הפסקה);

מספר = 0;

Serial.println (מספר);

}

}

//""

void saria () {

for (int i = 0; i <sizeof (Saria); i ++) {

int STime = 1000 / SariaTime ;

טון (דובר, שריה , STime);

int pause = STime * 1.30;

עיכוב (הפסקה);

מספר = 0;

Serial.println (מספר);

}

}

rec recid

hts () {

// אם זה לא היה לחוץ כבר

אם (אותו דבר == 0) {

// אם למונה יש כרגע אחד מהערכים האלה הוסף אותו אליו

אם (מספר == 0 || מספר == 132 || מספר == 165 || מספר == 232 || מספר == 265 || מספר == 331 || מספר == 374) {

מספר = מספר + 1;

}

// אחרת הגדר אותו ל- 999 כך שתשמע רעש שגיאות

אחר {

מספר = 999;

}

// הגדר אותו לאחד כך שהארדואינו לא יקרא עיתונות ממושכת כהלחצות מרובות

אותו = 1;

}

// לשחק את הטון

אחר {

צליל (רמקול, NOTE_A4, BEATTIME);

}

// מדפיסה את ערכי הקלט שלך במסך הטורי

Serial.println (מספר); }

//""

קישורים בטלים () {

אם (אותו דבר == 0) {

אם (מספר == 133 || מספר == 254 || מספר == 244 || מספר == 332 || מספר == 375 || מספר == 221) {

מספר = מספר + 11;

}

אחרת אם (טלר == 0) {

מספר = 111;

}

אחר {

מספר = 999;

}

אותו = 1;

} אחר {

צליל (רמקול, NOTE_B4, BEATTIME);

} Serial.println (מספר);

}

//""

void boven () {

אם (אותו == 0) {אם (מספר == 111 || מספר == 144 || מספר == 233) {

מספר = מספר + 21;

}

אחר אם (teller == 0) {

מספר = 221;

}

אחר {

מספר = 999;

}

אותו = 1;

}

אחר {

צליל (רמקול, NOTE_D5, BEATTIME);

Serial.println (מספר);

}

}

//""

void onder () {

אם (אותו דבר == 0) {

אם (מספר == 343) {

מספר = מספר + 31;

}

אחרת אם (טלר == 0) {

מספר = 331;

} אחר {

מספר = 999;

} אותו = 1;

} אחר {

צליל (רמקול, NOTE_F4, BEATTIME);

Serial.println (מספר);

}

}

//""

בטל א () {

אם (אותו דבר == 0) {

אם (מספר == 0) {

מספר = 461;

}

אחר {

מספר = 999;

}

אותו = 1;

}

צליל (רמקול, NOTE_D4, BEATTIME);

Serial.println (מספר);

}

מוּמלָץ: