Cuprins:
- Pasul 1: Materiale și construcție
- Pasul 2: lipirea AVR-ului la LED-uri și difuzor
- Pasul 3: Programarea Attiny13a
- Pasul 4: Crearea firmware-ului pentru Marioman
- Pasul 5: Lăsați-l pe Marioman să se elibereze
Video: Clipind, cântând, Marioman: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:47
Folosiți un atiny13a, două LED-uri și un difuzor pentru felicitări pentru a crea un Marioman care clipeste care cântă melodia tematică Super Mario Brothers. Acesta poate fi un proiect ușor și ieftin pentru oricine caută un mod distractiv de a intra în programarea AVR! notele melodiilor sunt generate de un val pătrat emis pe un singur pin al microcontrolerului AVR. LED-urile care alternează pe fiecare notă sunt conectate la 2 pini fiecare din același cip.
Pasul 1: Materiale și construcție
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCost: 1,40 USD
- 2 LED-uri - orice LED-uri vor funcționa
- 1 baterie cu celule cu litiu
www.sparkfun.com/commerce/product_info.php?products_id=338 Cost: 2,00 USD
1 suport pentru celule de monede
www.sparkfun.com/commerce/product_info.php?products_id=8822 Cost: 1,25 USD
1 difuzor mic de pe o felicitare muzicală
Costul total al materialelor ~ 5 USD Cele două LED-uri au fost atașate direct la doi pini, fiecare dintre elementele 13A. Se utilizează doi pini pentru fiecare LED, al doilea pin este setat pentru a fi utilizat ca o conexiune la masă. Limita de curent a pinilor I / O de pe AVR va împiedica LED-urile să tragă prea mult, astfel încât un rezistor nu este necesar pentru conectarea Difuzorul folosit este tipic pentru unul care se găsește într-o felicitare muzicală, orice difuzor mic va face, dat fiind că acesta emite un ton de undă pătrat, nu este prea important să vă faceți griji cu privire la conducerea difuzorului sau la calitatea sunetului.
Pasul 2: lipirea AVR-ului la LED-uri și difuzor
Pentru ca LED-urile să se întindă ca brațele, un pin este îndoit peste AVR de fiecare parte. Orientarea AVR în acest fel face mai ușoară conectarea la difuzor (a doua imagine), deoarece conexiunile sunt pe cei doi pini inferiori. Pentru aspectul estetic, doriți ca partea frontală a cipului să fie orientată spre exterior, deci asigurați-vă că difuzorul este orientat în același mod atunci când este atasat.
Pasul 3: Programarea Attiny13a
Există o mulțime de opțiuni diferite pentru programarea AVR-urilor. Pentru acest proiect a fost utilizat USBtiny, care este disponibil ca kit de pe site-ul ladyadahttps://www.ladyada.net/make/usbtinyisp/index.html Pentru a conecta AVR-ul la programator puteți fie atașați fire la priza de sex feminin și conectați-le la o placă de măsurare sau, mai bine, obțineți un adaptor de programare AVR ieftin ca acesta.
Pasul 4: Crearea firmware-ului pentru Marioman
Attiny13A are 1K de bliț programabil și 64 de octeți de SRAM. Fișierul tar atașat are fișierul sursă, precum și firmware compilat pentru descărcare. Trei matrice din codul c au fost utilizate pentru a genera muzica
- freq - frecvențe ale fiecărei note
- lungime - lungimea fiecărei note
- întârziere - pauză între fiecare notă
Matricea de frecvență nu are frecvențele reale, ci mai degrabă valoarea de pus în registrul TTCROB pentru a genera unda pătrată de pe pinul PB0. Iată un scurt rezumat al calculelor și configurației pinului pentru generarea undei pătrate:
- Attiny13A are un oscilator intern setat la 9,6 MHz
- Ceasul intern pentru IO este oscilatorul împărțit la 8 sau 1,2 MHz
- Un cronometru intern este configurat într-un registru de 8 biți pentru a număra în fiecare ciclu de ceas cu prescala de 8.
- Rezultă o bifă egală cu 1 / (1,2 MHz / 8) =.006667ms
- Attiny13A este configurat pentru a compara ceea ce se află în registrul TCCR0B pe 8 biți cu temporizatorul și pentru a comuta un pin când se potrivesc.
- De exemplu, pentru a genera o undă pătrată la 524Hz (o octavă deasupra mijlocului C) care are o perioadă de 1,908ms.
1.908ms = 286 căpușe de ceas (1.908 /.0067) Împărțiți 286 la 2 pentru a comuta pinul la t / 2 (286/2 = 143) Puneți 143 în registrul TTCR0B pentru a genera această notă. Acesta este tot codul necesar pentru a configura cronometrul, efectuați compararea și transmiteți o undă pătrată:
TCCR0A | = (1 << WGM01); // configurați temporizatorul 1 pentru modul CTC TCCR0A | = (1 << COM0A0); // comutați OC0A pe meciul de comparare TCCR0B | = (1 << CS01); // clk / 8 prescale TTCR0B = 143; // generează o undă pătrată la 524HzPentru a întârzia tonurile și pauzele dintre ele, a fost utilizată o funcție simplă de întârziere
void sleep (int ms) {int cnt; pentru (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("NOP"); }}}Acest lucru se numără înapoi de la 150, unde fiecare ciclu NOP este de aproximativ.006667ms. Ultimul lucru pe care îl face codul este să parcurgeți matricele, să generați muzică și să clipiți cele două LED-uri. Acest lucru se face într-o buclă continuă pentru următorul cod
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); sleep (pgm_read_byte (& length [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // oprire temporizator TCCR0B = 0; sleep (pgm_read_word (& delay [cnt])); // pornire cronometru TCCR0B | = (1 << CS01); // clk / 8 prescale}}Există 156 de elemente în matricele de frecvențe / lungimi / întârziere, această buclă le traversează. Pinul PB3 și PB4 sunt fiecare comutate, astfel încât acestea vor alterna cu fiecare notă. Al doilea somn este pauza dintre notele pe care le jucăm. În codul de mai sus s-ar putea să observați cele două funcții pgm_read_byte () și pgm_read_word (), precum și cuvântul cheie PROGMEM. Cu un cip încorporat precum attiny, cantitatea de SRAM este foarte limitată, în acest caz doar 64 de octeți. Tablourile pe care le folosim pentru toate datele de frecvență / întârziere / lungime sunt mult mai mari de 64 de biți și, prin urmare, nu pot fi încărcate în memorie. Prin utilizarea directivei speciale PROGMEM avr-gcc, aceste matrice de date mari sunt împiedicate să se încarce în memorie, în schimb sunt citite de pe bliț.
Pasul 5: Lăsați-l pe Marioman să se elibereze
Videoclipul de mai sus îl arată pe Marioman în acțiune. Consumul mediu de energie este de aproximativ 25mA, astfel încât să poată clipi și să facă zgomote timp de aproximativ 10 ore înainte de a scurge celula monedei de litiu. bine potrivit pentru asta. Se poate adăuga un comutator, dar există ceva de spus pentru simplificarea acestuia.
Recomandat:
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Leds clipind în ritm !: 4 pași
Leds clipind în ritm !: ATENȚIE! LED-urile care clipesc cu muzica vă pot obține nebunie! Acest instructabil este despre clipirea unor LED-uri în funcție de ritmul oricărei muzici! Ideea din spatele acestui proces este foarte simplă, iar circuitul este foarte mic. Conceptul principal este: 1-Low pa
Cântând Arduino Spărgătorul de nuci: 8 pași
Singing Arduino Nutcracker: Acest spărgător de nuci își deschide gura pe baza sunetului de intrare. Se poate face cu ușurință în mai puțin de 3 ore pentru ca un începător să treacă de la o grămadă de piese la un spărgător de nuci. Pentru acest proiect, veți avea nevoie de un Spărgător de nuci cu gură mobilă, un prototip
Arduino Theremin Cântând Muppet: 6 pași (cu imagini)
Arduino Theremin Singing Muppet: Pentru un proiect școlar despre Arduino am creat un muppet cu un theremin încorporat pentru a-l face un muppet de cântat. În interiorul gurii sale este o fotocelulară care se conectează la un buzzer Piezo, astfel încât atunci când deschideți și închideți gura, înălțimea se va schimba (luminoasa