Sisällysluettelo:
- Vaihe 1: Materiaalit ja rakentaminen
- Vaihe 2: AVR: n juottaminen LEDeihin ja kaiuttimeen
- Vaihe 3: Attiny13a: n ohjelmointi
- Vaihe 4: Laiteohjelmiston luominen Mariomanille
- Vaihe 5: Anna Mariomanin löystyä
Video: Vilkkuu, laulaa, Marioman: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:04
Käytä attiny13a: ta, kahta LED-valoa ja onnittelukorttikaiutinta luodaksesi vilkkuva Marioman, joka soittaa Super Mario Brothers -teemapalkin, tämä voi olla helppo edullinen projekti kaikille, jotka etsivät hauskaa tapaa päästä AVR-ohjelmointiin! kappaleiden nuotit syntyvät neliöaallolla, joka lähetetään AVR -mikrokontrollerin yhdelle nastalle. LEDit, jotka vuorottelevat jokaisessa nuotissa, on kytketty 2 nastaan, joista jokainen on samassa sirussa.
Vaihe 1: Materiaalit ja rakentaminen
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3d Hinta: 1,40 dollaria
- 2 LEDiä - kaikki LEDit sopivat
- 1 litium -nappiparisto
www.sparkfun.com/commerce/product_info.php?products_id=338Hinta: 2,00 dollaria
1 nappisolun pidike
www.sparkfun.com/commerce/product_info.php?products_id=8822Hinta: 1,25 dollaria
1 pieni kaiutin musiikkikortista
Materiaalien kokonaiskustannukset ~ 5 $ Jokaisessa LEDissä käytetään kahta nastaa, toinen nasta on asetettu matalaksi käytettäväksi maadoitusliittimenä. AVR: n I/O -nastojen virtaraja estää LED -valoja vetämästä liikaa, joten vastusta ei tarvitse kytkeä Käytetty kaiutin on tyypillinen musiikkikortista löydetylle, mikä tahansa pieni kaiutin tekee, koska tämä antaa neliöaaltoäänen, joten ei ole liian tärkeää huolehtia kaiuttimen ajamisesta tai äänenlaadusta.
Vaihe 2: AVR: n juottaminen LEDeihin ja kaiuttimeen
Jotta LED -valot ulottuisivat käsivarsina, yksi tappi on taivutettu AVR: n yli kummallakin puolella. AVR: n suuntaaminen tällä tavalla helpottaa yhdistämistä kaiuttimeen (toinen kuva), koska liitännät ovat molemmissa pohjatapeissa. se on liitetty.
Vaihe 3: Attiny13a: n ohjelmointi
AVR: ien ohjelmointiin on paljon erilaisia vaihtoehtoja. Tähän projektiin käytettiin USBtiny -laitetta, joka on saatavana sarjana ladyadan sivustolta. joko liitä johdot naaraspistorasiaan ja kytke ne leipälevyyn tai hanki vielä halpa AVR -ohjelmointisovitin, kuten tämä.
Vaihe 4: Laiteohjelmiston luominen Mariomanille
Attiny13A: ssa on 1K ohjelmoitavaa salamaa ja 64tavua SRAM -muistia. Liitteenä oleva tar -tiedosto sisältää lähdetiedoston sekä ladattavan laiteohjelmiston. Kolme c -kooditaulukkoa käytettiin musiikin luomiseen
- freq - kunkin nuotin taajuudet
- pituus - kunkin nuotin pituus
- delay - tauko jokaisen nuotin välillä
Taajuusryhmällä ei ole todellisia taajuuksia, vaan arvo, joka lisätään TTCROB -rekisteriin neliöaallon muodostamiseksi PB0 -nastasta.
- Attiny13A: n sisäinen oskillaattori on asetettu 9,6 MHz: iin
- IO: n sisäinen kello on oskillaattori jaettuna 8 tai 1,2 MHz: llä
- Sisäinen ajastin on asetettu 8 -bittiseen rekisteriin laskemaan jokaisen kellojakson esiasteikko 8.
- Tämän tuloksena yksi rasti vastaa 1 / (1,2 MHz / 8) = 0,006667 ms
- Attiny13A on määritetty vertaamaan 8 -bittisen TCCR0B -rekisterin sisältöä ajastimeen ja vaihtamaan nasta, kun ne vastaavat toisiaan.
- Esimerkiksi neliöaallon luomiseksi taajuudella 524 Hz (yksi oktaavi keskellä C), jonka jakso on 1,908 ms.
1.908ms = 286 kellon tikit (1.908/.0067) Jaa 286 2: lla vaihtaaksesi nastan t/2: ssa (286/2 = 143) Laita 143 TTCR0B -rekisteriin tämän muistiinpanon luomiseksi. Tämä on kaikki tarvittava koodi aseta ajastin vertaamalla ja antamalla neliöaalto:
TCCR0A | = (1 << WGM01); // määritä ajastin 1 CTC -tilaan TCCR0A | = (1 << COM0A0); // vaihtaa OC0A vertailuhaussa TCCR0B | = (1 << CS01); // clk/8 esiasteikko TTCR0B = 143; // tuottaa neliöaallon taajuudella 524 HzÄänien ja niiden välisten taukojen viivästyttämiseen käytettiin yksinkertaista viivetoimintoa
tyhjä uni (int ms) {int cnt; for (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("NOP"); }}}Tämä laskee alaspäin 150: stä, jolloin jokainen NOP -sykli on noin.006667 ms.
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 (& taajuus [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); uni (pgm_read_byte (& pituus [cnt]))); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // pysäytysajastin TCCR0B = 0; uni (pgm_read_word (& delay [cnt]))); // käynnistysajastin TCCR0B | = (1 << CS01); // clk/8 esiasteikko}}Taajuuksissa/pituuksissa/viivejärjestelmissä on 156 elementtiä, tämä silmukka kulkee niiden läpi. Nastat PB3 ja PB4 on kytketty toisiinsa, joten ne vaihtelevat jokaisen nuotin kanssa. Ensimmäinen lepotila on sen nuotin pituus, jonka soitamme sen jälkeen, kun OCR0A -rekisteri on asetettu oikeaan arvoon. Toinen uni on tauko soittamiesi nuottien välillä. Yllä olevassa koodissa saatat huomata kaksi toimintoa pgm_read_byte () ja pgm_read_word () sekä avainsanan PROGMEM. Upotetun sirun kanssa, kuten attiny, SRAM -määrä on hyvin rajallinen, tässä tapauksessa vain 64 tavua. Kaikille taajuus-/viive-/pituustiedoille käyttämämme taulukot ovat paljon suurempia kuin 64 tavua, joten niitä ei voi ladata muistiin. Käyttämällä erityistä PROGMEM avr-gcc -direktiiviä, nämä suuret tietoryhmät estetään lataamasta muistiin, vaan ne luetaan flashista.
Vaihe 5: Anna Mariomanin löystyä
Yllä oleva video näyttää Mariomanin toiminnassa. Keskimääräinen virrankulutus on noin 25 mA, joten hän voi vilkkua ja tehdä ääniä noin 10 tuntia ennen litium -nappikennon tyhjentämistä. sopii tähän hyvin. Kytkimen voi lisätä, mutta on jotain sanottavaa sen pitämiseksi yksinkertaisena.
Suositeltava:
StickC M5Stack LED vilkkuu: 7 vaihetta
StickC M5Stack LED vilkkuu: Tässä projektissa opimme liittämään ja tekemään LED -vilkkumisen M5StickC ESP32 -moduulin avulla
Pieni LED -valo vilkkuu Kuva: 6 vaihetta
Pieni LED -valo vilkkuu Kuva: Voit vilkuttaa LED -valon helposti arduino- tai 555 -ajastimella. Mutta voit tehdä vilkkuvan piirin ilman tällaisia IC: itä. Tämä on yksinkertainen vilkkuva hahmo, joka on valmistettu erillisistä osista
Ohjaus -LED vilkkuu potentiometrillä ja OLED -näytöllä: 6 vaihetta
LED -vilkkumisen ohjaus potentiometrillä ja OLED -näytöllä: Tässä opetusohjelmassa opimme hallitsemaan vilkkuvaa LEDiä potentiometrillä ja näyttämään pulssitaajuuden arvon OLED -näytöllä
Arduino -ohjelmointi matkapuhelimen kautta -- Arduinodroid -- Arduino Ide for Android -- Vilkkuu: 4 vaihetta
Arduino -ohjelmointi matkapuhelimen kautta || Arduinodroid || Arduino Ide for Android || Vilkkuu: Tilaa youtube -kanavani saadaksesi lisää videoita …… Arduino on lauta, joka voidaan ohjelmoida suoraan USB: n kautta. Se on erittäin yksinkertainen ja halpa korkeakoulu- ja kouluhankkeisiin tai jopa tuotteiden prototyyppeihin. Monet tuotteet perustuvat siihen ensin
Vilkkuu EACHEN WiFi Smart Touch -kytkin Tasmota -toiminnolla: 10 vaihetta
Vilkkuva EACHEN WiFi Smart Touch -kytkin Tasmotan kanssa: Joten päätin tehdä tämän ohjeen kenelle tahansa muulle, joka on ihmetellyt, onko tämä mahdollista