תוכן עניינים:
- שלב 1: חומרים ובנייה
- שלב 2: הלחמת ה- AVR לנורות ולרמקול
- שלב 3: תכנות ה- Attiny13a
- שלב 4: יצירת הקושחה עבור Marioman
- שלב 5: לתת למריומן להשתחרר
וִידֵאוֹ: מהבהב, שר, מריומן: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:18
השתמש ב- attiny13a, שני נוריות LED ורמקול כרטיסי ברכה כדי ליצור מריומן מהבהב המנגן את שיר הנושא של האחים סופר מריו. זה יכול להיות פרויקט בעלות נמוכה וקלה לכל מי שמחפש דרך מהנה לפרוץ לתכנות AVR! תווי השירים נוצרים על ידי גל מרובע המופץ על סיכה אחת של המיקרו -בקר AVR. נוריות הלדים המתחלפות בכל פתק מחוברות ל -2 סיכות כל אחת מאותו שבב.
שלב 1: חומרים ובנייה
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3d עלות: $ 1.40
- 2 נוריות - כל נוריות יספיקו
- סוללת מטבע ליתיום אחת
www.sparkfun.com/commerce/product_info.php?products_id=338 עלות: $ 2.00
מחזיק תאי מטבע אחד
www.sparkfun.com/commerce/product_info.php?products_id=8822 עלות: $ 1.25
1 רמקול קטן מכרטיס ברכה מוזיקלי
עלות החומרים הכוללת ~ $ 5 שני הלדים הוצמדו ישירות לשני סיכות כל אחד מה- attiny13A. שני פינים משמשים לכל נורית, הפין השני מוגדר נמוך כחיבור קרקע. הגבול הנוכחי של סיכות הקלט/פלט במכשיר ה- AVR ימנע מהנוריות לצייר יותר מדי ולכן אין צורך בנגד להתחבר הרמקול המשמש אופייני לאחד שנמצא בכרטיס ברכה מוזיקלי, כל רמקול קטן יעשה, בהתחשב בכך שהוא מוציא צליל גל מרובע, אין זה חשוב מדי לדאוג לנהיגה ברמקול או מאיכות הצליל.
שלב 2: הלחמת ה- AVR לנורות ולרמקול
כדי שהנוריות יגיעו כמו זרועות, סיכה אחת כפופה מעל ה- AVR בכל צד. כיוון ה- AVR בדרך זו מקל על החיבור לרמקול (תמונה שנייה) מכיוון שהחיבורים נמצאים על שני הפינים התחתונים. לאסתטיקה אתה רוצה שחזית השבב פונה החוצה, וודא שהרמקול פונה באותה הדרך כאשר הוא מצורף.
שלב 3: תכנות ה- Attiny13a
ישנן הרבה אפשרויות שונות לתכנות AVRs. לפרויקט זה נעשה שימוש ב- USBtiny הזמין כערכה מאתר ladyada https://www.ladyada.net/make/usbtinyisp/index.html לחיבור ה- AVR למתכנת אתה יכול או לחבר חוטים לשקע הנשי ולחבר אותם ללוח או יותר טוב לקבל מתאם תכנות AVR זול כמו זה https://www.sparkfun.com/commerce/product_info.php? products_id = 8508 יחד עם כותרות זכר 3x2 לחיבור התקע.
שלב 4: יצירת הקושחה עבור Marioman
ל- attiny13A יש 1K של פלאש הניתן לתכנות, ו- 64bytes של SRAM. לקובץ הזפת המצורף יש את קובץ המקור וכן קושחה מורכבת להורדה. שלושה מערכים בקוד c שימשו ליצירת המוסיקה.
- freq - תדרים של כל תו
- אורך - אורך כל פתק
- עיכוב - הפסקה בין כל פתק
מערך התדרים אינו מכיל את התדרים בפועל אלא את הערך שיש להכניס לרשום TTCROB ליצירת הגל המרובע מהפין PB0. להלן סיכום קצר של החישובים ותצורת הפינים ליצירת גל מרובע:
- ל- attiny13A יש מתנד פנימי המוגדר ל- 9.6MHz
- השעון הפנימי עבור IO הוא המתנד מחולק ב- 8 או 1.2MHz
- טיימר פנימי מוגדר ברשם של 8 ביט כדי לספור כל מחזור שעון בגודל 8 מראש.
- התוצאה היא קרצית אחת שווה ל 1 / (1.2MHz / 8) =.006667ms
- Attiny13A מוגדר להשוות את מה שנמצא במרשם 8bit TCCR0B עם הטיימר ולהחליף סיכה כאשר הם תואמים.
- לדוגמה, על מנת ליצור גל מרובע ב -524 הרץ (אוקטבה אחת מעל אמצע C) שיש לו תקופה של 1.908ms.
1.908ms = 286 קרציות שעון (1.908/.0067) חלקו 286 ב- 2 כדי להחליף את הסיכה ב- t/2 (286/2 = 143) הכנס 143 לרשום TTCR0B כדי ליצור הערה זו. זהו כל הקוד הדרוש כדי להגדיר את הטיימר, בצע את ההשוואה ופלט גל מרובע:
TCCR0A | = (1 << WGM01); // הגדר טיימר 1 למצב CTC TCCR0A | = (1 << COM0A0); // החלף OC0A על התאמת התאמה TCCR0B | = (1 << CS01); // clk/8 TTCR0B מראש בגודל = 143; // ליצור גל מרובע ב -524 הרץכדי לעכב את הצלילים וההפסקות ביניהם נעשה שימוש בפונקציית עיכוב פשוטה
שינה חללה (int ms) {int cnt; עבור (cnt = 0; cnt <(ms); cnt ++) {int i = 150; בעוד (i--) {_asm ("NOP"); }}}זה נספר מ -150 כאשר כל מחזור NOP הוא בערך.006667ms. הדבר האחרון שהקוד עושה הוא להעביר את המערכים, ליצור את המוזיקה ולמצמץ את שני הלדים. זה נעשה בלולאה רציפה עם הקוד הבא
const uint8_t freq PROGMEM = {… data}; const uint8_t length PROGMEM = {… data}; const uint8_t delay PROGMEM = {… data};… while (1) {for (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); שינה (pgm_read_byte (& length [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // עצר טיימר TCCR0B = 0; שינה (pgm_read_word (& עיכוב [cnt])); // התחל טיימר TCCR0B | = (1 << CS01); // clk/8 מראש בגודל}}ישנם 156 אלמנטים במערכי התדרים/אורכים/עיכובים, הלולאה הזו חוצה אותם. סיכה PB3 ו- PB4 כל אחת מהן מחליפה כך שהן מתחלפות עם כל צליל השינה הראשונה היא אורך השטר שאנו מנגנים לאחר הגדרת רשם OCR0A לערך המתאים. השינה השנייה היא ההשהיה בין התווים שאנו מנגנים. בקוד שלמעלה ייתכן שתבחין בשתי הפונקציות pgm_read_byte () ו- pgm_read_word () כמו גם במילת המפתח PROGMEM. עם שבב מוטבע כמו האטוני כמות ה- SRAM מוגבלת מאוד, במקרה זה 64 בייט בלבד. המערכים שבהם אנו משתמשים עבור כל נתוני התדר/עיכוב/אורך גדולים בהרבה מ- 64 בתים ולכן לא ניתן לטעון אותם בזיכרון. באמצעות ההוראה המיוחדת של PROGMEM avr-gcc מונעים מערכי נתונים גדולים אלה לטעון לזיכרון, במקום לקרוא אותם מהבזק.
שלב 5: לתת למריומן להשתחרר
הסרטון לעיל מציג את מריומן בפעולה. צריכת החשמל הממוצעת היא בערך 25mA כך שהוא יכול למצמץ ולהשמיע קולות במשך כ -10 שעות לפני שהוא מנקז את תא המטבע ליתיום.הדרך היחידה להדליק ולכבות אותו היא להסיר את סוללת תא המטבעות, החסונה המופיעה בחומרים היא מתאים היטב לכך. ניתן להוסיף מתג אך יש מה לומר על שמירת הפשטות.
מוּמלָץ:
קישוט עץ מהבהב PCB: 5 שלבים (עם תמונות)
קישוט עץ מהבהב PCB: במדריך זה תלמד כיצד ליצור פרויקט אלקטרוניקה ביעילות. כדוגמה, אכין PCB עם אורות מהבהבים מתחילתו ועד סופו. כל האלקטרוניקה מופעלת בעצמם ללא צורך בקידוד. כל מה שאתה צריך לעשות הוא לחבר
StickC M5Stack LED מהבהב: 7 שלבים
StickC M5Stack LED Blink: בפרויקט זה נלמד כיצד להתחבר ולעשות מהבהב LED באמצעות מודול M5StickC ESP32. צפה בסרטון
מהבהב LED באמצעות 555 IC: 5 שלבים
מהבהב LED באמצעות 555 IC: היי חבר, היום אני הולך להכין מהבהב LED בעזרת טיימר IC 555. נתחיל
עכביש LED מהבהב ענק: 13 שלבים
עכביש מהבהב LED ענק: סכנה הוא שמי האמצעי ורציתי להכין משהו מגניב וטכנולוגי לתחרות ליל כל הקדושים- אנחנו מהנדסים מתחילים, אז חשבנו שנוכל להרכיב משהו מגניב. מה שיצא לנו זה: עכביש עם שמונה עיני LED
כיצד להכין אור מהבהב LED מהבהב במהירות: 11 שלבים
כיצד להכין נורת LED מהבהבת מהירה: במדריך זה אראה לך כיצד להכין נורת LED מהבהבת מהירה ומהירה שתוכל לחבר לאופניים שלך או לכל מקום שתרצה. הוא מהבהב יותר מ 3 פעמים בשנייה. זול יותר להכין אחד מאשר לקנות אחד. אתה יכול לגרום לזה להיות שלך