Sadržaj:
- Korak 1: Materijali i izrada
- Korak 2: Lemljenje AVR -a na LED diode i zvučnik
- Korak 3: Programiranje Attiny13a
- Korak 4: Kreiranje firmvera za Marioman
- Korak 5: Puštanje Mariomana na slobodu
Video: Trepće, pjeva, Marioman: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:09
Upotrijebite attiny13a, dvije LED diode i zvučnik za čestitku da biste stvorili trepćući Marioman koji svira pjesmu teme Super Mario Brothers. Ovo može biti jednostavan jeftin projekt za svakoga tko traži zabavan način za upad u AVR programiranje! note pesama generišu se kvadratnim talasom koji se emituje na jednom pinu AVR mikrokontrolera. LED diode koje se izmjenjuju na svakoj noti povezane su na 2 pina od svakog istog čipa.
Korak 1: Materijali i izrada
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCijena: 1,40 USD
- 2 LED - sve LED diode će poslužiti
- 1 litijumska dugmasta baterija
www.sparkfun.com/commerce/product_info.php?products_id=338Cijena: 2,00 USD
1 držač za novčiće
www.sparkfun.com/commerce/product_info.php?products_id=8822Cijena: 1,25 USD
1 mali zvučnik sa muzičke čestitke
Ukupni trošak materijala ~ 5 USD Dvije LED diode su spojene direktno na dva pina, svaki od attiny13A. Za svaku LED diodu koriste se dva pina, drugi pin je postavljen nisko da bi se koristio kao veza za uzemljenje. Ograničavanje struje I/O pinova na AVR -u spriječit će LED diode da previše crtaju pa otpornik nije potreban za priključivanje Upotrijebljeni zvučnik tipičan je za onaj koji se nalazi u muzičkoj čestitki, to će učiniti svaki mali zvučnik, s obzirom na to da se iz njega emitira kvadratni val, nije previše važno brinuti o upravljanju zvučnikom ili kvaliteti zvuka.
Korak 2: Lemljenje AVR -a na LED diode i zvučnik
Da bi LED diode išle ispruži ruku, jedan pin je savijen preko AVR -a sa svake strane. Orijentacija AVR -a na ovaj način olakšava povezivanje sa zvučnikom (druga slika) budući da su veze na dva donja pina. Za estetiku želite da prednja strana čipa bude okrenuta prema van, pa budite sigurni da je zvučnik okrenut na isti način kada u prilogu je.
Korak 3: Programiranje Attiny13a
Postoji mnogo različitih opcija za programiranje AVR -a. Za ovaj projekt korišten je USBtiny koji je dostupan kao komplet sa ladyadine web stranice https://www.ladyada.net/make/usbtinyisp/index.htmlZa povezivanje AVR -a s programatorom možete ili spojite žice na žensku utičnicu i uključite ih u matičnu ploču ili još bolje nabavite jeftin adapter za programiranje AVR -a poput ovog https://www.sparkfun.com/commerce/product_info.php? products_id = 8508zajedno sa 3x2 muška zaglavlja za spajanje utikača.
Korak 4: Kreiranje firmvera za Marioman
Attiny13A ima 1K programabilnog flash -a i 64 bajta SRAM -a. Priložena tar datoteka ima izvornu datoteku, kao i kompajlirani firmver za preuzimanje. Tri niza u c kodu su korištena za generiranje muzike
- freq - frekvencije svake note
- length - dužina svake note
- delay - pauza između svake note
Frekvencijski niz nema stvarne frekvencije, već vrijednost koju treba unijeti u TTCROB registar za generiranje kvadratnog vala s pina PB0. Evo kratkog sažetka proračuna i konfiguracije pinova za generiranje kvadratnih valova:
- Attiny13A ima interni oscilator postavljen na 9,6MHz
- Unutrašnji sat za IO je oscilator podijeljen sa 8 ili 1,2 MHz
- Interni mjerač vremena postavljen je u 8 -bitni registar za brojanje svakog ciklusa takta s predmjerom od 8.
- Ovo rezultira jednim tikom jednakim 1 / (1.2MHz / 8) =.006667ms
- Attiny13A je konfiguriran za usporedbu onoga što se nalazi u 8 -bitnom registru TCCR0B s tajmerom i promjenu pina kada se podudaraju.
- Na primjer, da bi se generirao kvadratni val na 524Hz (jedna oktava iznad sredine C) koji ima period od 1.908ms.
1.908ms = 286 otkucaja sata (1.908/.0067) Podijelite 286 sa 2 za prebacivanje pina na t/2 (286/2 = 143) Stavite 143 u registar TTCR0B da biste generirali ovu bilješku. Ovo je sav kod koji je neophodan za postavljanje mjerača vremena uporedite i ispišite kvadratni val:
TCCR0A | = (1 << WGM01); // konfigurirati tajmer 1 za CTC način rada TCCR0A | = (1 << COM0A0); // prebacivanje OC0A na upoređivanje podudaranja TCCR0B | = (1 << CS01); // clk/8 predmjera TTCR0B = 143; // generiramo kvadratni val na 524HzZa odgodu tonova i pauza između njih korištena je jednostavna funkcija odgode
void sleep (int ms) {int cnt; for (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("NOP"); }}}Ovo odbrojava od 150 gdje je svaki NOP ciklus otprilike 0,006667 ms. Posljednja stvar koju kod radi je petlja kroz nizove, generiranje muzike i treptanje dviju LED dioda. Ovo se radi u kontinuiranoj petlji for sa sljedećim kodom
const uint8_t freq PROGMEM = {… data}; const uint8_t length PROGMEM = {… data}; const uint8_t kašnjenje PROGMEM = {… data};… while (1) {for (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_čitaj_bajt (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); sleep (pgm_read_byte (& length [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // mjerač vremena zaustavljanja TCCR0B = 0; sleep (pgm_read_word (& delay [cnt])); // start timer TCCR0B | = (1 << CS01); // clk/8 predmjera}}U nizovima frekvencija/dužina/kašnjenja ima 156 elemenata, ova petlja ih prelazi. Pin PB3 i PB4 se prebacuju tako da se izmjenjuju sa svakom notom. Prvi san je dužina note koju sviramo nakon postavljanja registra OCR0A na odgovarajuću vrijednost. Drugi san je pauza između nota koje sviramo. U gore navedenom kodu možda ste primijetili dvije funkcije pgm_read_byte () i pgm_read_word () kao i ključnu riječ PROGMEM. Uz ugrađeni čip poput attiny, količina SRAM -a je vrlo ograničena, u ovom slučaju samo 64 bajta. Nizovi koje koristimo za sve podatke o frekvenciji/kašnjenju/dužini mnogo su veći od 64 bajta i stoga se ne mogu učitati u memoriju. Korištenjem posebne PROGMEM avr-gcc direktive spriječeno je učitavanje ovih velikih polja podataka u memoriju, umjesto toga se čitaju iz flash-a.
Korak 5: Puštanje Mariomana na slobodu
Gornji video prikazuje Mariomana u akciji. Prosječna potrošnja energije je oko 25 mA, tako da može treptati i stvarati zvukove oko 10 sati prije nego što isprazni litijumsku ćeliju. Jedini način da ga uključite i isključite je ukloniti dugmastu bateriju, čvrstu koja je navedena u materijalima dobro prilagođen za ovo. Prekidač se može dodati, ali postoji nešto što treba reći da bi bilo jednostavno.
Preporučuje se:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način da napravite igru, posebno nešto poput zagonetke, vizuelnog romana ili avanturističke igre
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom uputstvu ćemo izvršiti otkrivanje lica na Raspberry Pi 4 sa Shunya O/S koristeći biblioteku Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja sa
Kako napraviti brojač koraka?: 3 koraka (sa slikama)
Kako napraviti brojač koraka?: Nekada sam se dobro snašao u mnogim sportovima: hodanje, trčanje, vožnja bicikla, igranje badmintona itd. Volim jahanje da bih brzo putovao. Pa, pogledaj moj trbušni trbuh … Pa, u svakom slučaju, odlučujem ponovo početi vježbati. Koju opremu treba pripremiti?
Brojač koraka - Mikro: Bit: 12 koraka (sa slikama)
Brojač koraka - Micro: Bit: Ovaj projekat će biti brojač koraka. Za mjerenje koraka koristit ćemo senzor akcelerometra koji je ugrađen u Micro: Bit. Svaki put kada se Micro: Bit protrese, broju ćemo dodati 2 i prikazati ga na ekranu
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima