Obsah:
- Krok 1: Materiály a konštrukcia
- Krok 2: Spájkovanie AVR s diódami LED a reproduktorom
- Krok 3: Programovanie Attiny13a
- Krok 4: Vytvorenie firmvéru pre Marioman
- Krok 5: Nechajte Mariomana uvoľniť
Video: Žmurkanie, spievanie, Marioman: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:02
Pomocou Attiny13a, dvoch diód LED a reproduktora na prianie vytvorte blikajúceho Mariomana, ktorý hrá ústrednú pieseň Super Mario Brothers. To môže byť ľahký nízkonákladový projekt pre každého, kto hľadá zábavný spôsob, ako sa dostať do programovania AVR! noty skladieb sú generované štvorcovou vlnou vystupujúcou na jeden pin mikrokontroléra AVR. LED diódy, ktoré sa striedajú na každej note, sú pripojené k 2 pinom, z toho istého čipu.
Krok 1: Materiály a konštrukcia
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCena: 1,40 USD
- 2 LED - akékoľvek LED diódy budú stačiť
- 1 lítiová gombíková batéria
www.sparkfun.com/commerce/product_info.php?products_id=338Cena: 2,00 USD
1 držiak na mince
www.sparkfun.com/commerce/product_info.php?products_id=8822Cena: 1,25 dolára
1 malý reproduktor z hudobného priania
Celkové náklady na materiál ~ 5 dolárov Dve LED diódy boli pripevnené priamo na dva kolíky, každý z attiny13A. Pre každú LED sú použité dva piny, druhý pin je nastavený na nízku hodnotu ako uzemnenie. Súčasný limit I/O pinov na AVR zabráni prílišnému kresleniu LED, takže na pripojenie nie je potrebný rezistor Použitý reproduktor je typický pre ten, ktorý sa nachádza v hudobnej blahoželanie. Každý malý reproduktor to urobí, pretože vzhľadom na to, že ide o zvuk s obdĺžnikovými vlnami, nie je príliš dôležité starať sa o kvalitu reproduktora alebo zvuku.
Krok 2: Spájkovanie AVR s diódami LED a reproduktorom
Aby diódy LED siahali ako ramená, jeden kolík je ohnutý nad AVR na každej strane. Orientácia AVR týmto spôsobom uľahčuje pripojenie k reproduktoru (druhý obrázok), pretože pripojenia sú na dvoch spodných kolíkoch. Z dôvodu estetiky chcete, aby predná strana čipu smerovala von, takže sa uistite, že reproduktor stojí rovnakým spôsobom aj pri je to prilozene.
Krok 3: Programovanie Attiny13a
Existuje veľa rôznych možností na programovanie AVR. Na tento projekt bol použitý USBtiny, ktorý je k dispozícii ako súprava z webu Ladyada https://www.ladyada.net/make/usbtinyisp/index.htmlAk chcete pripojiť AVR k programátoru, môžete buď zapojte káble do zásuvky a zapojte ich do prepojovacej lišty, alebo ešte lepšie získajte lacný programovací adaptér AVR takto:.
Krok 4: Vytvorenie firmvéru pre Marioman
Attiny13A má 1 kB programovateľného blesku a 64 bajtov pamäte SRAM. Pripojený súbor tar má zdrojový súbor a tiež kompilovaný firmvér na stiahnutie. Na generovanie hudby boli použité tri polia v kóde c.
- freq - frekvencie každej noty
- dĺžka - dĺžka každej poznámky
- oneskorenie - prestávka medzi každou notou
Frekvenčné pole nemá skutočné frekvencie, ale hodnotu, ktorú je potrebné vložiť do registra TTCROB na generovanie štvorcovej vlny z kolíka PB0. Tu je stručný súhrn výpočtov a konfigurácie pinov na generovanie štvorcových vĺn:
- Attiny13A má interný oscilátor nastavený na 9,6 MHz
- Interný takt pre IO je oscilátor delený 8 alebo 1,2 MHz
- Interný časovač je nastavený v 8 -bitovom registri, aby počítal každý hodinový cyklus s predvoľbou 8.
- Výsledkom je jedno zatrhnutie rovnajúce sa 1 / (1,2 MHz / 8) = 0,006667 ms
- Attiny13A je nakonfigurovaný tak, aby porovnával to, čo je v 8 -bitovom registri TCCR0B, s časovačom a prepínal pin, keď sa zhodujú.
- Napríklad na generovanie štvorcovej vlny pri 524 Hz (jedna oktáva nad stredným C), ktorá má periódu 1,908 ms.
1,908ms = 286 taktov (1,908/0,0067) Rozdelením 286 na 2 prepnete kolík na t/2 (286/2 = 143) Na generovanie tejto poznámky vložte 143 do registra TTCR0B. Toto je všetok potrebný kód Ak chcete nastaviť časovač, porovnajte ho a vytvorte štvorcovú vlnu:
TCCR0A | = (1 << WGM01); // konfigurácia časovača 1 pre režim CTC TCCR0A | = (1 << COM0A0); // prepnite OC0A na porovnanie zápasu TCCR0B | = (1 << CS01); // clk/8 prescale TTCR0B = 143; // generovanie štvorcovej vlny pri 524 HzNa oddialenie tónov a prestávok medzi nimi bola použitá jednoduchá funkcia oneskorenia
prázdny spánok (int ms) {int cnt; pre (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("NOP"); }}}Toto sa odpočíta od 150, kde každý cyklus NOP je približne 0,006667 ms. Posledná vec, ktorú kód urobí, je slučka cez polia, vygenerovanie hudby a bliknutie dvoch diód LED. To sa robí nepretržite pre slučku s nasledujúcim kódom
konštanta uint8_t freq PROGMEM = {… data}; konšt uint8_t dĺžka PROGMEM = {… data}; konšt uint8_t oneskorenie PROGMEM = {… data};… while (1) {for (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); spánok (pgm_read_byte (& dĺžka [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // časovač zastavenia TCCR0B = 0; spánok (pgm_read_word (& delay [cnt])); // spustenie časovača TCCR0B | = (1 << CS01); // clk/8 prescale}}V poliach frekvencií/dĺžok/oneskorení je 156 prvkov, táto slučka ich prechádza. Pin PB3 a PB4 sú prepínateľné, takže sa budú striedať s každou notou. Prvý spánok je dĺžka noty, ktorú prehráme po nastavení registra OCR0A na príslušnú hodnotu. Druhý spánok je prestávka medzi tónmi, ktoré hráme. Vo vyššie uvedenom kóde ste si mohli všimnúť dve funkcie pgm_read_byte () a pgm_read_word () a tiež kľúčové slovo PROGMEM. S integrovaným čipom, akým je Attiny, je množstvo pamäte SRAM veľmi obmedzené, v tomto prípade iba 64 bajtov. Polia, ktoré používame pre všetky údaje o frekvencii/oneskorení/dĺžke, sú oveľa väčšie ako 64 bajtov, a preto ich nemožno načítať do pamäte. Použitím špeciálnej smernice PROGMEM avr-gcc je zabránené načítaniu týchto veľkých dátových polí do pamäte, namiesto toho sú načítané z flash.
Krok 5: Nechajte Mariomana uvoľniť
Vyššie uvedené video ukazuje Mariomana v akcii. Priemerná spotreba energie je asi 25 mA, takže pred vybitím lítiového gombíkového článku môže žmurkať a vydávať zvuky asi 10 hodín. Jediným spôsobom, ako ho zapnúť a vypnúť, je vybratie gombíkovej batérie, odolnej, uvedenej v materiáloch, na toto sa hodí. Prepínač je možné pridať, ale je potrebné povedať, že je to jednoduché.
Odporúča:
Počítadlo krokov - mikro: bit: 12 krokov (s obrázkami)
Počítadlo krokov - mikro: bit: Tento projekt bude počítadlom krokov. Na meranie našich krokov použijeme senzor akcelerometra, ktorý je vstavaný v Micro: Bit. Zakaždým, keď sa Micro: Bit zatrasie, pridáme k počtu 2 a zobrazíme ho na obrazovke
Akustická levitácia s Arduino Uno krok za krokom (8 krokov): 8 krokov
Akustická levitácia s Arduino Uno krok za krokom (8 krokov): Ultrazvukové meniče zvuku L298N Dc napájací adaptér ženského adaptéra s mužským DC kolíkom Arduino UNOBreadboard Ako to funguje: Najprv nahráte kód do Arduino Uno (je to mikrokontrolér vybavený digitálnym a analógové porty na prevod kódu (C ++)
Bolt - Nočné hodiny pre bezdrôtové nabíjanie DIY (6 krokov): 6 krokov (s obrázkami)
Bolt - Nočné hodiny bezdrôtového nabíjania DIY (6 krokov): Indukčné nabíjanie (tiež známe ako bezdrôtové nabíjanie alebo bezdrôtové nabíjanie) je typ bezdrôtového prenosu energie. Na prenos elektriny do prenosných zariadení používa elektromagnetickú indukciu. Najbežnejšou aplikáciou je bezdrôtové nabíjanie Qi
Ako rozobrať počítač pomocou jednoduchých krokov a fotografií: 13 krokov (s obrázkami)
Ako rozobrať počítač jednoduchými krokmi a obrázkami: Toto je návod, ako rozobrať počítač. Väčšina základných komponentov je modulárna a dá sa ľahko odstrániť. Je však dôležité, aby ste o tom boli organizovaní. Pomôže to zabrániť strate súčiastok a tiež pri opätovnej montáži
Od Roomby k Roveru iba 5 krokov!: 5 krokov
Od Roomby po Rover za pouhých 5 krokov !: Roboti Roomba sú zábavným a jednoduchým spôsobom, ako ponoriť prsty do nohy vo svete robotiky. V tomto návode podrobne popíšeme, ako previesť jednoduchú Roombu na ovládateľný rover, ktorý súčasne analyzuje svoje okolie. Zoznam dielov 1.) MATLAB2.) Roomb