Sadržaj:
- Korak 1: Materijali i izrada
- Korak 2: Lemljenje AVR -a na LED diode i zvučnik
- Korak 3: Programiranje Attiny13a
- Korak 4: Stvaranje firmvera za Marioman
- Korak 5: Puštanje Mariomana na slobodu
Video: Trepće, pjeva, Marioman: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:38
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 pjesama stvaraju se kvadratnim valom koji se emitira na jednom pinu AVR mikrokontrolera. LED diode koje se izmjenjuju na svakoj noti spojene 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 biti dovoljne
- 1 litijeva 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 s glazbene čestitke
Ukupni trošak materijala ~ 5 USD Dvije LED diode bile su spojene izravno 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čenje 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 glazbenoj č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 se 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 poput ruke, jedan je pin 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. Radi estetike ž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 mogućnosti za programiranje AVR -a. Za ovaj projekt korišten je USBtiny koji je dostupan kao komplet s ladyadine web stranicehttps://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 jeftini AVR programski adapter poput ovogahttps://www.sparkfun.com/commerce/product_info.php? products_id = 8508zajedno s 3x2 muška zaglavlja za spajanje utikača.
Korak 4: Stvaranje firmvera za Marioman
Attiny13A ima 1K programabilnog bljeskalice i 64 bajta SRAM -a. Priložena tar datoteka ima izvornu datoteku, kao i kompajlirani firmver za preuzimanje. Za generiranje glazbe korištena su tri niza u c kodu
- freq - frekvencije svake note
- length - duljina 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 izračuna i konfiguracije pinova za generiranje kvadratnih valova:
- Attiny13A ima unutarnji oscilator postavljen na 9,6MHz
- Unutarnji sat za IO je oscilator podijeljen s 8 ili 1,2 MHz
- Interni mjerač vremena postavljen je u 8 -bitni registar za brojanje svakog ciklusa takta s predmjerom od 8.
- Rezultat je jedna oznaka jednaka 1 / (1.2MHz / 8) =.006667ms
- Attiny13A je konfiguriran za usporedbu onoga što je u 8 -bitnom registru TCCR0B s timerom i promjenu pina kada se podudaraju.
- Na primjer, kako 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 usporedite i ispišite kvadratni val:
TCCR0A | = (1 << WGM01); // konfigurirati mjerač vremena 1 za CTC način rada TCCR0A | = (1 << COM0A0); // prebacivanje OC0A na usporedbu podudaranja TCCR0B | = (1 << CS01); // clk/8 predmjera TTCR0B = 143; // generiramo kvadratni val na 524HzZa odgodu tonova i stanke između njih korištena je jednostavna funkcija odgode
void sleep (int ms) {int cnt; za (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. Zadnja stvar koju kôd radi je petlja kroz nizove, generiranje glazbe i treptanje dviju LED dioda. To se radi u kontinuiranoj for petlji 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_čitaj_bajt (& duljina [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/duljina/kašnjenja nalazi se 156 elemenata, ova petlja ih prolazi. Pin PB3 i PB4 se mijenjaju tako da će se izmjenjivati sa svakom notom. Prvi san je duljina note koju sviramo nakon postavljanja registra OCR0A na odgovarajuću vrijednost. Drugi san je stanka 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. S ugrađenim čipom poput attinyja 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/duljini 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, nego se čitaju iz bljeskalice.
Korak 5: Puštanje Mariomana na slobodu
Gornji video prikazuje Marioman na djelu. Prosječna potrošnja energije iznosi oko 25 mA, tako da može treptati i stvarati zvukove oko 10 sati prije nego što isprazni litij -ćelijsku ćeliju. Jedini način da ga uključite i isključite je ukloniti bateriju u obliku dugmaste ploče, čvrstu koja je navedena u materijalima dobro prilagođen za ovo. Prekidač se može dodati, ali postoji nešto za reći kako bi bilo jednostavno.
Preporučeni:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način stvaranja igre, osobito nečega poput zagonetke, vizualnog romana ili avanturističke igre
Broj koraka: 17 koraka
الكشف عن عن أنواع المحاليل: محمدآل سعودالكشف عن المحاليل رابط الفديو
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom Instructableu ćemo izvršiti detekciju lica na Raspberry Pi 4 sa Shunya O/S pomoću knjižnice Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja s
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 ponovno početi vježbati. Koju opremu trebam pripremiti?
Aduino UNO Broj koraka: 5 koraka
Aduino UNO 를 이용한 도망 치는 &&&& && l g g g g g g g g g g g g g g g 4 g 4 4 4 4 프로젝트 프로젝트 프로젝트 프로젝트 프로젝트 프로젝트 프로젝트 프로젝트 일자 일자 일자: 2017.01.06. ~ 2017.01.11.- 역할 분담 SW 엔지니어: 김 예은, 임동영 HW 엔지니어: 김지훈 디자이너: 이재민 레코더: 홍 다예 ------------------------ --------------------------------------------------