Tartalomjegyzék:
- 1. lépés: Anyagok és felépítés
- 2. lépés: Az AVR forrasztása a LED -ekhez és a hangszóróhoz
- 3. lépés: Az Attiny13a programozása
- 4. lépés: Firmware létrehozása a Marioman számára
- 5. lépés: A Marioman lazítása
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:44
Használjon attiny13a-t, két LED-et és egy üdvözlőkártya-hangszórót, hogy létrehozzon egy villogó Marioman-t, aki a Super Mario Brothers főcímdalát játssza le. Ez egy egyszerű, alacsony költségű projekt lehet azok számára, akik szórakoztató módot keresnek az AVR programozásba! a dalok hangjait az AVR mikrokontroller egyetlen érintkezőjére kiadott négyzethullám generálja. Az egyes hangokon váltakozó LED -ek ugyanazon chip 2 tűjéhez vannak csatlakoztatva.
1. lépés: Anyagok és felépítés
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dKöltség: 1,40 USD
- 2 LED - bármelyik LED megteszi
- 1 db lítium gombelem
www.sparkfun.com/commerce/product_info.php?products_id=338Költség: 2,00 USD
1 db érmés cellatartó
www.sparkfun.com/commerce/product_info.php?products_id=8822Költség: 1,25 USD
1 kis hangszóró egy zenei üdvözlőlapról
Az anyagok összköltsége ~ 5 USD A két LED közvetlenül az attiny13A két csapjára volt rögzítve. Minden LED -hez két tűt használnak, a második érintkezőt alacsonyra állítják földelő csatlakozásként. Az AVR -en lévő I/O tűk áramkorlátja megakadályozza, hogy a LED -ek túl sokat húzzanak, ezért nincs szükség ellenállás csatlakoztatására. sorozat. A használt hangszóró jellemző a zenei üdvözlőlapon található hangszórókra, bármelyik kis hangszóró megteszi, mivel ez négyzethullámú hangot ad ki, nem túl fontos aggódni a hangszóró vezetése vagy a hangminőség miatt.
2. lépés: Az AVR forrasztása a LED -ekhez és a hangszóróhoz
Ahhoz, hogy a LED -ek karként nyúljanak ki, az egyik tű mindkét oldalon az AVR fölé van hajlítva. Az AVR ilyen irányú elhelyezése megkönnyíti a csatlakoztatást a hangszóróhoz (második kép), mivel a csatlakozók a két alsó érintkezőn vannak. Az esztétika érdekében a chip elejét kívánja kifelé nézni, ezért győződjön meg arról, hogy a hangszóró ugyanúgy néz ki, amikor csatolva van.
3. lépés: Az Attiny13a programozása
Rengeteg lehetőség van az AVR -ek programozására. Ehhez a projekthez az USBtiny -t használták, amely készletként elérhető a ladyada webhelyéről. Http://www.ladyada.net/make/usbtinyisp/index.html Csatlakoztassa a vezetékeket a dugaszolóaljzathoz, és csatlakoztassa őket egy kenyérsütő táblához, vagy még jobb, ha beszerez egy ilyen olcsó AVR programozási adaptert.
4. lépés: Firmware létrehozása a Marioman számára
Az attiny13A 1K programozható vakuval és 64 bájt SRAM memóriával rendelkezik. A csatolt tar fájl tartalmazza a forrásfájlt, valamint a letöltött letöltött firmware -t. A c kód három tömbjét használták a zene előállításához
- freq - az egyes hangok gyakorisága
- length - az egyes hangok hossza
- delay - szünet az egyes hangok között
A frekvencia tömb nem rendelkezik a tényleges frekvenciákkal, hanem inkább a TTCROB regiszterbe beillesztendő értékkel, hogy a négyzethullámot a PB0 érintkezőből hozza létre. Íme egy rövid összefoglaló a négyzethullám -generálás számításairól és csapkonfigurációjáról:
- Az attiny13A belső oszcillátora 9,6 MHz -re van beállítva
- Az IO belső órája az oszcillátor 8 vagy 1,2 MHz -el osztva
- Egy belső időzítő van beállítva egy 8 bites regiszterben, hogy minden órajel ciklusát megszámolja 8 -as előskálával.
- Ez azt eredményezi, hogy egy kullancs egyenlő 1 / (1,2MHz / 8) =.006667ms
- Az attiny13A úgy van konfigurálva, hogy összehasonlítsa a 8 bites TCCR0B regiszter tartalmát az időzítővel, és kapcsoljon egy tűt, ha megfelelnek.
- Például négyzethullám előállításához 524 Hz -en (egy oktáv a középső C fölött), amelynek időtartama 1,908 ms.
1.908ms = 286 órajel (1.908/.0067) Ossza el a 286 -ot 2 -vel a gomb t/2 -es váltásához (286/2 = 143) A jegyzet létrehozásához tegye a 143 -at a TTCR0B regiszterbe. Ez az összes szükséges kód Az időzítő beállításához végezze el az összehasonlítást, és adjon ki négyzethullámot:
TCCR0A | = (1 << WGM01); // az 1. időzítő beállítása CTC módhoz TCCR0A | = (1 << COM0A0); // az OC0A átkapcsolása az összehasonlító találaton TCCR0B | = (1 << CS01); // clk/8 előskála TTCR0B = 143; // négyzethullám generálása 524 Hz -enA hangok és a köztük lévő szünetek késleltetéséhez egyszerű késleltetési funkciót használtak
üres alvás (int ms) {int cnt; mert (cnt = 0; cnt <(ms); cnt ++) {int i = 150; míg (i--) {_asm ("NOP"); }}}Ez visszaszámol 150 -ről, ahol minden NOP ciklus körülbelül 0,006667 ms. Az utolsó dolog, amit a kód végez, az a tömbök közötti ciklus, a zene generálása és a két LED villogása. Ez folyamatos ciklusban történik a következő kóddal
const uint8_t freq PROGMEM = {… adat}; const uint8_t hossz PROGMEM = {… adat}; const uint8_t késleltetés PROGMEM = {… adat};… míg (1) {for (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); alvás (pgm_read_byte (& length [cnt]))); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // stop timer TCCR0B = 0; alvás (pgm_read_word (& delay [cnt]))); // indítási időzítő TCCR0B | = (1 << CS01); // clk/8 prescale}}A frekvenciák/hosszúságok/késleltetési tömbökben 156 elem található, ez a hurok áthalad rajtuk. A PB3 és PB4 érintkezők mindegyike át van kapcsolva, így váltakoznak az egyes hangokkal. Az első alvás az a hang, amelyet az OCR0A regiszter megfelelő értékére állítása után játszunk. A második alvás a szünet a játszott hangok között. A fenti kódban észreveheti a két funkciót: pgm_read_byte () és pgm_read_word (), valamint a PROGMEM kulcsszót. Egy olyan beágyazott chipnél, mint az attiny, az SRAM mennyisége nagyon korlátozott, ebben az esetben csak 64 bájt. Az összes frekvencia/késleltetés/hosszúság adathoz használt tömbök sokkal nagyobbak, mint 64 bájt, ezért nem tölthetők be a memóriába. A speciális PROGMEM avr-gcc direktíva használatával megakadályozható, hogy ezek a nagyméretű adattömbök betöltődjenek a memóriába, hanem flashről olvassák őket.
5. lépés: A Marioman lazítása
A fenti videó bemutatja Marioman akcióját. Az átlagos energiafogyasztás körülbelül 25 mA, így körülbelül 10 órán keresztül villoghat és hangokat adhat ki, mielőtt lemeríti a lítium -érmecellát. Az egyetlen módja annak, hogy be- és kikapcsolja a gombelem eltávolítását, az anyagokban felsorolt erős elem erre alkalmas. Egy kapcsoló hozzáadható, de van valami mondanivalója az egyszerűség érdekében.
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Arduino programozás mobilon keresztül -- Arduinodroid -- Arduino Ide for Android -- Pislog: 4 lépés
Arduino programozás mobilon keresztül || Arduinodroid || Arduino Ide for Android || Blink: Kérlek, iratkozz fel a youtube csatornámra további videókért …… Az Arduino tábla, amely közvetlenül USB -n keresztül programozható. Nagyon egyszerű és olcsó főiskolai és iskolai projektekhez, vagy akár a termékek prototípusához. Sok termék először erre épít
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő