Kazalo:
- 1. korak: Materiali in izdelava
- 2. korak: Spajkanje AVR na LED in zvočnik
- 3. korak: Programiranje Attiny13a
- 4. korak: Ustvarjanje vdelane programske opreme za Marioman
- 5. korak: Pustite Mariomanu na volju
Video: Utripanje, petje, Marioman: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:09
Z attiny13a, dvema LED diodama in zvočnikom za voščilnico ustvarite utripajoč Marioman, ki predvaja temo pesmi Super Mario Brothers. To je lahko enostaven poceni projekt za vsakogar, ki išče zabaven način za vstop v programiranje AVR! note pesmi nastanejo s kvadratnim valom, ki se odda na en sam pin mikrokrmilnika AVR. Svetleče diode, ki se izmenjujejo na vsaki bankovci, so povezane na 2 zatiča istega čipa.
1. korak: Materiali in izdelava
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCena: 1,40 USD
- 2 LED - vse LED bodo primerne
- 1 litijeva gumbasta baterija
www.sparkfun.com/commerce/product_info.php?products_id=338 Cena: 2,00 USD
1 držalo za gumbaste celice
www.sparkfun.com/commerce/product_info.php?products_id=8822 Cena: 1,25 USD
1 majhen zvočnik iz glasbene voščilnice
Skupni stroški materiala ~ 5 USD Dve LED diodi sta bili pritrjeni neposredno na dva zatiča attiny13A. Za vsako LED se uporabljata dva zatiča, drugi zatič je nastavljen nizko za uporabo kot ozemljitvena povezava. Trenutna omejitev vhodno -izhodnih zatičev na AVR bo preprečila, da bi LED diode vlekle preveč, zato za priključitev upora ni potrebno Uporabljeni zvočnik je tipičen za tistega, ki ga najdemo v glasbeni voščilnici, to bo naredil vsak majhen zvočnik, saj ta oddaja ton kvadratnega vala, ni preveč pomembno skrbeti za vožnjo zvočnika ali kakovost zvoka.
2. korak: Spajkanje AVR na LED in zvočnik
Če želite, da svetleče diode sežejo kot roke, je en zatič upognjen nad AVR na vsaki strani. Tako usmerjanje AVR -ja olajša povezavo z zvočnikom (druga slika), saj sta povezavi na dveh spodnjih zatičih. Zaradi estetike želite, da je sprednji del čipa obrnjen navzven, zato se prepričajte, da je zvočnik obrnjen v isto smer, ko je priloženo.
3. korak: Programiranje Attiny13a
Obstaja veliko različnih možnosti za programiranje AVR -jev. Za ta projekt je bil uporabljen USBtiny, ki je na voljo kot komplet na spletnem mestu ladyadahttps://www.ladyada.net/make/usbtinyisp/index.html Za povezavo AVR -ja s programerjem lahko bodisi priključite žice v žensko vtičnico in jih priključite na mizo ali še bolje, da dobite poceni programski vmesnik AVR, kot je ta https://www.sparkfun.com/commerce/product_info.php? products_id = 8508 skupaj z moškimi priključki 3x2 za priključitev vtiča.
4. korak: Ustvarjanje vdelane programske opreme za Marioman
Attiny13A ima 1K programabilne bliskavice in 64 bajtov SRAM. Priložena tar datoteka vsebuje izvorno datoteko in sestavljeno vdelano programsko opremo za prenos. Tri nizi v kodi c so bili uporabljeni za ustvarjanje glasbe
- freq - frekvence vsake note
- length - dolžina vsake note
- zamik - premor med vsako noto
Frekvenčni niz nima dejanskih frekvenc, ampak vrednost, ki jo je treba vnesti v register TTCROB za ustvarjanje kvadratnega vala iz zatiča PB0. Tu je kratek povzetek izračunov in konfiguracije nožic za generiranje kvadratnih valov:
- Attiny13A ima notranji oscilator, nastavljen na 9,6 MHz
- Notranja ura za IO je oscilator, deljen z 8 ali 1,2 MHz
- Notranji časovnik je nastavljen v 8 -bitnem registru za štetje vsakega cikla ure s predrazmerjem 8.
- Posledica tega je, da je ena kljukica enaka 1 / (1.2MHz / 8) =.006667ms
- Attiny13A je konfiguriran tako, da primerja tisto, kar je v 8 -bitnem registru TCCR0B, s časovnikom in preklaplja pin, ko se ujemata.
- Na primer, da bi ustvarili kvadratni val pri 524Hz (eno oktavo nad sredino C), ki ima obdobje 1.908ms.
1.908ms = 286 odmikov ure (1.908/.0067) 286 delite z 2, da preklopite pin na t/2 (286/2 = 143) Vnesite 143 v register TTCR0B, da ustvarite to opombo. To je vsa koda, ki je potrebna za nastavitev časovnika naredite primerjavo in iznesite kvadratni val:
TCCR0A | = (1 << WGM01); // konfiguriramo časovnik 1 za način CTC TCCR0A | = (1 << COM0A0); // preklopite OC0A na primerjalno ujemanje TCCR0B | = (1 << CS01); // clk/8 predrazmerna TTCR0B = 143; // ustvari kvadratni val pri 524HzZa zakasnitev tonov in premorov med njimi je bila uporabljena preprosta funkcija zamika
void sleep (int ms) {int cnt; za (cnt = 0; cnt <(ms); cnt ++) {int i = 150; medtem ko (i--) {_asm ("NOP"); }}}To odšteva od 150, pri čemer je vsak cikel NOP približno 0,006667 ms. Zadnja stvar, ki jo naredi koda, je zanka skozi matrike, ustvarjanje glasbe in utripanje obeh LED. To se naredi v neprekinjeni zanki for z naslednjo kodo
const uint8_t freq PROGMEM = {… data}; const uint8_t length PROGMEM = {… data}; const uint8_t zakasnitev 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); // časovnik ustavitve TCCR0B = 0; sleep (pgm_read_word (& delay [cnt])); // časovnik za zagon TCCR0B | = (1 << CS01); // clk/8 predstopenj}}V frekvenčnih/dolžinskih/zakasnitvenih nizih je 156 elementov, ta zanka jih prečka. Pin PB3 in PB4 se preklopita, tako da se bosta izmenjevali z vsako noto. Prvi spanec je dolžina note, ki jo igramo po nastavitvi registra OCR0A na ustrezno vrednost. Drugi spanec je premor med notami, ki jih igramo. V zgornji kodi ste morda opazili dve funkciji pgm_read_byte () in pgm_read_word () ter ključno besedo PROGMEM. Z vgrajenim čipom, kot je atiny, je količina SRAM zelo omejena, v tem primeru le 64 bajtov. Nizki, ki jih uporabljamo za vse podatke o frekvenci/zakasnitvi/dolžini, so veliko večji od 64 bajtov in jih zato ni mogoče naložiti v pomnilnik. Z uporabo posebne direktive PROGMEM avr-gcc se prepreči nalaganje teh velikih podatkovnih nizov v pomnilnik, namesto da se preberejo iz bliskavice.
5. korak: Pustite Mariomanu na volju
Zgornji video prikazuje Mariomana v akciji. Povprečna poraba energije je približno 25 mA, tako da lahko približno 10 ur utripa in oddaja zvoke, preden izprazni litijevo gumbno celico. temu primerno. Stikalo je mogoče dodati, vendar je za poenostavitev reči nekaj.
Priporočena:
Arduino: Petje rojstnega dne za darila: 14 korakov
Arduino: Singing Birthday Box for Presents: Ta Singing Birthday Box je namenjen pakiranju rojstnodnevnih daril, pri čemer mu Arduino pomaga pri zagotavljanju posebnih funkcij, vključno s petjem in prižiganjem LED sveč. Z možnostjo petja pesmi za vesel rojstni dan in prižiganja LED c
Blink Caos: Mapa Logístico za naključno utripanje: 5 korakov
Blink Caos: Mapa Logístico Para Random Blink: Este es un instructable para un generador de aleatoriedad, use and mapa log í stico, que ahora explico que es. Con el mapa log í stico, se enciende y apaga un led de forma aleatoria. Este puede servir simplemente de ejemplo de como a
Utripanje LED srca: 10 korakov (s slikami)
Utripajoče LED srce: Minilo je 5 čudovitih let, odkar sem se poročil s svojo ženo. Podarjam ji to elektronsko srce. Čuti lahko navdušenje. Utripa glede na imetnik srca. Podpira me pri številnih mojih norih nalogah. Kot vse moje stvaritve sem tudi jaz
Petje Arduino Hrestač: 8 korakov
Petje Arduino Hrestač: Ta orešček odpre usta na podlagi vhodnega zvoka. Začetnik lahko zlahka naredi v manj kot treh urah, tako da gre iz kupa delov do pojočega oreščka. Za ta projekt boste potrebovali Hrestača s premičnimi usti, prototip
Vodoodporen zvočnik za boljše petje pod tušem: 12 korakov (s slikami)
Vodoodporen zvočnik za boljše petje pod prho: Če ste kot jaz-in vem, da ste-radi radi pojete pod tušem in sesate pri tem! Ničesar ne morem storiti glede grozljivega petja, toda stvar, ki me res moti in verjetno vse ostale v dosegu mojega voka