Obsah:
- Krok 1: Materiály a konstrukce
- Krok 2: Pájení AVR k LED diodám a reproduktoru
- Krok 3: Programování Attiny13a
- Krok 4: Vytvoření firmwaru pro Mariomana
- Krok 5: Nechte Mariomana uvolnit
Video: Bliká, zpívá, Marioman: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:25
Pomocí Attiny13a, dvou diod LED a reproduktoru blahopřání vytvořte blikajícího Mariomana, který hraje ústřední melodii Super Mario Brothers. To může být snadný nízkonákladový projekt pro každého, kdo hledá zábavný způsob, jak proniknout do programování AVR! noty skladeb jsou generovány čtvercovou vlnou vystupující na jeden pin mikrokontroléru AVR. LED diody, které se střídají na každé notě, jsou připojeny ke 2 pinům na stejném čipu.
Krok 1: Materiály a konstrukce
1 Attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCost: 1,40 $
- 2 LED diody - všechny LED diody budou stačit
- 1 lithiová knoflíková baterie
www.sparkfun.com/commerce/product_info.php?products_id=338Cena: 2,00 $
1 držák na mince
www.sparkfun.com/commerce/product_info.php?products_id=8822Cena: 1,25 $
1 malý reproduktor z hudebního přání
Celkové náklady na materiál ~ 5 $ Dvě LED diody byly připevněny přímo na dva piny každého z attiny13A. Pro každou LED jsou použity dva piny, druhý pin je nastaven nízko pro použití jako uzemnění. Proudový limit I/O pinů na AVR zabrání přílišnému kreslení LED, takže pro připojení není nutný odpor Použitý reproduktor je typický pro ten, který se nachází v hudebním přání, každý malý reproduktor to udělá, vzhledem k tomu, že se jedná o výstup signálu s obdélníkovou vlnou, není příliš důležité se starat o řízení reproduktoru nebo kvalitu zvuku.
Krok 2: Pájení AVR k LED diodám a reproduktoru
Aby LED diody šly jako ramena, je jeden kolík ohnutý přes AVR na každé straně. Orientace AVR tímto způsobem usnadňuje připojení k reproduktoru (druhý obrázek), protože připojení jsou na dvou spodních pinech. Pro estetiku chcete, aby přední část čipu směřovala ven, takže se ujistěte, že reproduktor směřuje stejným způsobem, když je to přiloženo.
Krok 3: Programování Attiny13a
Existuje spousta různých možností pro programování AVR. Pro tento projekt byl použit USBtiny, který je k dispozici jako sada na stránkách Ladyada https://www.ladyada.net/make/usbtinyisp/index.html Chcete -li připojit AVR k programátoru, můžete buď připojte vodiče k zásuvce a zapojte je do prkénka, nebo ještě lépe si pořiďte levný programovací adaptér AVR takto:.
Krok 4: Vytvoření firmwaru pro Mariomana
Attiny13A má 1 kB programovatelného blesku a 64 bajtů SRAM. Připojený soubor tar má zdrojový soubor a také kompilovaný firmware pro stažení. Ke generování hudby byla použita tři pole v kódu c
- freq - frekvence každé noty
- délka - délka každé noty
- zpoždění - pauza mezi jednotlivými notami
Frekvenční pole nemá skutečné frekvence, ale spíše hodnotu, kterou je třeba vložit do registru TTCROB ke generování čtvercové vlny z pinu PB0. Zde je stručný souhrn výpočtů a konfigurace pinů pro generování čtvercových vln:
- Attiny13A má interní oscilátor nastavený na 9,6 MHz
- Interní hodiny pro IO jsou oscilátor dělený 8 nebo 1,2 MHz
- Interní časovač je nastaven v 8bitovém registru, aby počítal každý hodinový cyklus s předvolbou 8.
- Výsledkem je jedno zaškrtnutí rovné 1 / (1,2 MHz / 8) = 0,006667 ms
- Attiny13A je nakonfigurován tak, aby porovnával, co je v 8bitovém registru TCCR0B, s časovačem a přepínal pin, když se shodují.
- Například za účelem generování čtvercové vlny při 524 Hz (jedna oktáva nad středem C), která má periodu 1,908 ms.
1,908ms = 286 tiků hodin (1,908/0,0067) Rozdělením 286 na 2 přepnete kolík na t/2 (286/2 = 143) Vložte 143 do registru TTCR0B a vygenerujte tuto poznámku. To je veškerý kód, který je nezbytný Chcete -li nastavit časovač, proveďte porovnání a výstup čtvercové vlny:
TCCR0A | = (1 << WGM01); // konfigurace časovače 1 pro režim CTC TCCR0A | = (1 << COM0A0); // přepnout OC0A na porovnávací zápas TCCR0B | = (1 << CS01); // clk/8 prescale TTCR0B = 143; // generování čtvercové vlny při 524 HzKe zpoždění tónů a přestávek mezi nimi byla použita jednoduchá funkce zpoždění
prázdný spánek (int ms) {int cnt; pro (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("NOP"); }}}To se odpočítává ze 150, kde každý cyklus NOP je přibližně 0,006667 ms. Poslední věcí, kterou kód udělá, je smyčka přes pole, generování hudby a blikání dvou diod LED. To se provádí v nepřetržité smyčce for s následujícím kódem
konst uint8_t freq PROGMEM = {… data}; konst uint8_t délka PROGMEM = {… data}; konst uint8_t zpoždění 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); // stopky TCCR0B = 0; sleep (pgm_read_word (& delay [cnt])); // spuštění časovače TCCR0B | = (1 << CS01); // clk/8 prescale}}V polích frekvencí/délek/zpoždění je 156 prvků, tato smyčka je prochází. Pin PB3 a PB4 se přepínají, takže se budou střídat s každou notou První uspání je délka noty, kterou zahrajeme po nastavení registru OCR0A na příslušnou hodnotu. Druhým spánkem je pauza mezi notami, které hrajeme. Ve výše uvedeném kódu jste si mohli všimnout dvou funkcí pgm_read_byte () a pgm_read_word () a také klíčového slova PROGMEM. S integrovaným čipem, jako je Attiny, je množství SRAM velmi omezené, v tomto případě pouze 64 bajtů. Pole, která používáme pro všechna data o frekvenci/zpoždění/délce, jsou mnohem větší než 64 bajtů, a proto je nelze načíst do paměti. Použitím speciální směrnice PROGMEM avr-gcc je zabráněno načítání těchto velkých datových polí do paměti, místo toho jsou čtena z flash.
Krok 5: Nechte Mariomana uvolnit
Výše uvedené video ukazuje Mariomana v akci. Průměrná spotřeba energie je asi 25 mA, takže před vybitím lithiového knoflíkového článku může asi 10 hodin blikat a vydávat zvuky. Jediným způsobem, jak jej zapnout a vypnout, je vyjmutí knoflíkové baterie, robustní baterie uvedené v materiálech. na tohle se hodí. Lze přidat přepínač, ale je třeba říci, že je to jednoduché.
Doporučuje:
StickC M5Stack LED bliká: 7 kroků
StickC M5Stack LED Blink: V tomto projektu se naučíme, jak připojit a vytvořit LED Blink pomocí modulu M5StickC ESP32. Podívejte se na video
Tiny LED bliká Obrázek: 6 kroků
Drobné blikání LED Obrázek: LED můžete snadno blikat pomocí časovače arduino nebo 555. Ale můžete vytvořit blikající obvod bez takových integrovaných obvodů. Jedná se o jednoduchou blikající figurku vyrobenou z diskrétních částí
Oprava bezdrátové náhlavní soupravy Creative Tactic3D Rage (modrá bliká, žádné párování, výměna baterie): 11 kroků
Oprava bezdrátové náhlavní soupravy Creative Tactic3D Rage (modrá bliká, žádné párování, výměna baterie): Tato příručka na obrázcích je pro ty, kteří vlastní náhlavní soupravu Creative Headset, která ztratila párování s vysílačem USB a opětovné spárování nefunguje, protože náhlavní souprava pomalu modře bliká a už nereagovat na tlačítka. V tomto stavu nemůžete
Kontrolní LED bliká s potenciometrem a OLED displejem: 6 kroků
Ovládání LED bliká pomocí potenciometru a OLED displeje: V tomto tutoriálu se naučíme, jak ovládat LED blikání potenciometrem a zobrazovat hodnotu pulzní frekvence na OLED displeji. Podívejte se na ukázkové video
Bliká EACHEN WiFi Smart Touch Switch s Tasmotou: 10 kroků
Blikající KAŽDÝ WiFi inteligentní dotykový spínač s Tasmotou: Rozhodl jsem se proto, aby byl tento Instructable pro kohokoli jiného, kdo přemýšlel, jestli je to možné