Sisukord:
- Samm: materjalid ja ehitus
- 2. samm: AVR -i jootmine LED -ide ja kõlari külge
- 3. samm: Attiny13a programmeerimine
- Samm: püsivara loomine Mariomanile
- Samm: lase Mariomanil lahti
Video: Vilkuv, laulmine, marioman: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:51
Kasutage atiny13a, kahte LED-i ja õnnitluskaardi kõlarit, et luua vilkuv Marioman, kes mängib Super Mario Brothersi tunnuslaulu. See võib olla lihtne odav projekt kõigile, kes otsivad lõbusat viisi AVR-i programmeerimiseks! lugude noote genereerib AVR -i mikrokontrolleri ühele kontaktile väljastatud ruutlaine. Igas noodis vahelduvad LED -id on ühendatud 2 tihvtiga, millest igaüks on sama kiibiga.
Samm: materjalid ja ehitus
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dHind: 1,40 dollarit
- 2 LED -i - kõik LED -id sobivad
- 1 liitium -mündipatarei
www.sparkfun.com/commerce/product_info.php?products_id=338Hind: 2,00 dollarit
1 mündiraku hoidja
www.sparkfun.com/commerce/product_info.php?products_id=8822Hind: 1,25 dollarit
1 väike kõlar muusikaliselt õnnitluskaardilt
Materjalide kogumaksumus ~ 5 dollarit Iga LED -i jaoks kasutatakse kahte tihvti, teine tihvt on madal, et seda saaks kasutada maandusühendusena. AVR -i I/O -kontaktide praegune piir takistab LED -ide liigset tõmbamist, nii et takisti pole vaja ühendada seeria. Kasutatav kõlar on tüüpiline muusikalises õnnitluskaardis leiduvale kõlarile, mida teeb iga väike kõlar, arvestades, et see annab ruudukujulise laine tooni, pole liiga oluline muretseda kõlari juhtimise või helikvaliteedi pärast.
2. samm: AVR -i jootmine LED -ide ja kõlari külge
Selleks, et valgusdioodid sirutuksid välja nagu käed, on üks tihvt painutatud AVR -i mõlemal küljel. AVR -i sellisel suunamisel on lihtne ühendada kõlariga (teine pilt), kuna ühendused on kahel alumisel tihvtil. Esteetika huvides soovite, et kiibi esikülg jääks väljapoole, nii et veenduge, et kõlar oleks samal ajal see on kinnitatud.
3. samm: Attiny13a programmeerimine
AVR -ide programmeerimiseks on palju erinevaid võimalusi. Selle projekti jaoks kasutati USBtiny -d, mis on saadaval komplektina ladyada saidilt https://www.ladyada.net/make/usbtinyisp/index.html AVR -i ühendamiseks programmeerijaga saate kas ühendada juhtmed naissoost pistikupessa ja ühendada need leivaplaadiga või veel parem hankida selline odav AVR -i programmeerimisadapter nagu seehttps://www.sparkfun.com/commerce/product_info.php? products_id = 8508 koos 3x2 isasega päistega pistiku ühendamiseks.
Samm: püsivara loomine Mariomanile
Attiny13A -l on 1K programmeeritavat välklampi ja 64 baiti SRAM -i. Lisatud tõrvafailil on allikafail ja allalaadimiseks koostatud püsivara. Muusika genereerimiseks kasutati kolme massiivi c -koodis
- freq - iga noodi sagedused
- pikkus - iga noodi pikkus
- delay - paus iga noodi vahel
Sagedusmassiivil ei ole tegelikke sagedusi, vaid pigem väärtus, mis tuleb TTCROB registrisse panna, et tekitada ruutlaine PB0 tihvtilt. Siin on lühike kokkuvõte ruutlaine genereerimise arvutustest ja tihvtide konfiguratsioonist:
- Attiny13A sisemine ostsillaator on seatud 9,6 MHz
- IO sisemine kell on ostsillaator, mis on jagatud 8 või 1,2 MHz -ga
- 8 -bitises registris on seadistatud sisemine taimer, mis loeb kokku iga kellatsükli eelseadistusega 8.
- Selle tulemuseks on üks linnuke 1 / (1,2MHz / 8) = 0,006667ms
- Attiny13A on konfigureeritud võrdlema 8 -bitise TCCR0B registri andmeid taimeriga ja lülitama nööpnõela, kui need sobivad.
- Näiteks selleks, et tekitada ruutlaine sagedusel 524 Hz (üks oktaav üle keskmise C), mille periood on 1,908 ms.
1.908ms = 286 kella tiksumist (1.908/.0067) Jagage 286 2 -ga, et nööpnõela t/2 ümber lülitada (286/2 = 143) Pange selle märkme loomiseks 143 TTCR0B registrisse. See on kõik vajalik kood Taimeri seadistamiseks tehke võrdlus ja väljastage ruutlaine:
TCCR0A | = (1 << WGM01); // seadista taimer 1 CTC režiimi jaoks TCCR0A | = (1 << COM0A0); // lülita OC0A võrdlusmängu TCCR0B | = (1 << CS01); // clk/8 eelskaala TTCR0B = 143; // genereerida ruutlaine sagedusel 524 HzToonide ja nende vaheliste pauside viivitamiseks kasutati lihtsat viivitusfunktsiooni
tühi uni (int ms) {int cnt; jaoks (cnt = 0; cnt <(ms); cnt ++) {int i = 150; samas (i--) {_asm ("NOP"); }}}See loeb alla 150 -st, kus iga NOP -tsükkel on ligikaudu 0,006667 ms. Viimane asi, mida kood teeb, on massiivide läbimine, muusika loomine ja kahe LED -i vilkumine. Seda tehakse pideva tsüklina järgmise koodiga
const uint8_t freq PROGMEM = {… andmed}; const uint8_t pikkus PROGMEM = {… andmed}; const uint8_t viivitus PROGMEM = {… andmed};… samas (1) {jaoks (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); uni (pgm_read_byte (& pikkus [cnt]))); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // stopp -taimer TCCR0B = 0; uni (pgm_read_word (& delay [cnt]))); // starditaimer TCCR0B | = (1 << CS01); // clk/8 eelkaala}}Sageduste/pikkuste/viivituste massiivides on 156 elementi, see silmus läbib neid. Tihvtid PB3 ja PB4 on mõlemad ümber lülitatud, nii et need vahelduvad iga noodiga. Esimene uni on noodi pikkus, mida mängime pärast OCR0A registri sobiva väärtuse seadmist. Teine uni on paus mängitavate nootide vahel. Ülaltoodud koodis võite märgata kahte funktsiooni pgm_read_byte () ja pgm_read_word () ning märksõna PROGMEM. Sisseehitatud kiibiga, nagu atiny, on SRAM -i kogus väga piiratud, antud juhul ainult 64 baiti. Massiivid, mida kasutame kõigi sageduse/viivituse/pikkuse andmete jaoks, on palju suuremad kui 64 baiti ja seetõttu ei saa neid mällu laadida. Kasutades spetsiaalset programmi PROGMEM avr-gcc, takistatakse nende suurte andmemassiivide mällu laadimist, selle asemel loetakse neid välklambist.
Samm: lase Mariomanil lahti
Ülaltoodud video näitab Mariomanit tegevuses. Keskmine energiatarve on umbes 25 mA, nii et ta saab enne liitiumpatarei tühjendamist umbes 10 tundi vilkuda ja häält teha. Ainus viis, kuidas teda sisse ja välja lülitada, on eemaldada mündipatarei, materjalides loetletud vastupidav sobib selleks hästi. Lüliti saab lisada, kuid selle lihtsuse tagamiseks on midagi öelda.
Soovitan:
PCB vilkuv puu kaunistamine: 5 sammu (piltidega)
PCB vilkuv puu kaunistamine: Selles õpetuses saate teada, kuidas tõhusalt elektroonikaprojekti teha. Näitena valmistan vilkuva tulega trükkplaadi algusest lõpuni. Kogu elektroonika töötab ise, ilma kodeerimiseta. Kõik, mida pead tegema, on pistik
Laule järgiv Led-vilkuv Hack-O-Lantern!: 6 sammu
Laule järgiv LED-välklamp Hack-O-Lantern
Hiiglaslik vilkuv LED -ämblik: 13 sammu
Hiiglaslik vilkuv LED-ämblik: Oht on mu keskmine nimi ja ma tahtsin Halloweeni võistluse jaoks midagi lahedat ja tehnilist valmistada- oleme algajad insenerid, nii et arvasime, et peaksime suutma midagi lahedat kokku panna. Välja tulime järgmiselt: kaheksa LED -silmaga ämblik
Laulmine Bust Prop: 7 sammu
Singing Bust Prop: Kas olete kunagi mõelnud, kuidas kummitavas mõisas laulvad büstid töötasid või isegi tahtsite proovida neid hästi teha, see juhendab teile, kuidas neid teha ja see on tõesti lihtne
Vilkuv/tuhmuv/vilkuv LED 555 taimeriga: 7 sammu
Vilkuv/tuhmuv/vilkuv LED 555 taimeriga: see pisike vooluring on lihtne viis tuhmunud LED -i tegemiseks ilma kiipe programmeerimata või koodi kirjutamata. Vaid mõned lihtsad komponendid ja olete valmis kogu päeva tuhmuma. Lõpptulemus on pidev hääbumine ja hääbumine nagu ooterežiimis Mac. Proovige