Satura rādītājs:

Mirgo, dzied, mariomāne: 5 soļi
Mirgo, dzied, mariomāne: 5 soļi

Video: Mirgo, dzied, mariomāne: 5 soļi

Video: Mirgo, dzied, mariomāne: 5 soļi
Video: НЕГАТИВНАЯ РЕАКЦИЯ / РАЗОБЛАЧЕНИЕ ПЕВЦА / ДИМАШ и ПОНАСЕНКОВ 2024, Septembris
Anonim
Mirgo, dzied, marioman
Mirgo, dzied, marioman

Izmantojiet attiny13a, divas gaismas diodes un apsveikuma kartītes skaļruni, lai izveidotu mirgojošu Marioman, kas atskaņo Super Mario Brothers motīvu dziesmu. Tas var būt vienkāršs lēts projekts ikvienam, kurš meklē jautru veidu, kā ielauzties AVR programmēšanā! dziesmu piezīmes ģenerē kvadrātveida vilnis, kas tiek izvadīts uz viena AVR mikrokontrollera tapas. Gaismas diodes, kas mainās uz katras nots, ir savienotas ar 2 tapām katrā vienā mikroshēmā.

1. solis: materiāli un konstrukcija

Materiāli un konstrukcija
Materiāli un konstrukcija

1 attiny13a

www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3d Cena: 1,40 ASV dolāri

  • 2 gaismas diodes - derēs jebkuras gaismas diodes
  • 1 litija monētu baterija

www.sparkfun.com/commerce/product_info.php?products_id=338Cena: 2,00 ASV dolāri

1 monētas elementu turētājs

www.sparkfun.com/commerce/product_info.php?products_id=8822Cena: 1,25 ASV dolāri

1 mazs skaļrunis no muzikālās apsveikuma kartītes

Kopējās materiālu izmaksas ~ 5 ASV dolāri Abas gaismas diodes tika piestiprinātas tieši pie divām tapām katrā no attiny13A. Katrai gaismas diodei tiek izmantotas divas tapas, otra tapa ir iestatīta uz zemu, lai to izmantotu kā zemējuma savienojumu. AVR I/O tapu pašreizējais ierobežojums neļaus gaismas diodēm pārāk daudz zīmēties, tāpēc nav nepieciešams pievienot rezistoru sērija. Izmantotais skaļrunis ir tipisks tam, kas atrodams muzikālajā apsveikuma kartītē, un to darīs jebkurš mazs skaļrunis, ņemot vērā, ka tiek izvadīts kvadrātveida viļņa tonis, nav pārāk svarīgi uztraukties par skaļruņa vadīšanu vai skaņas kvalitāti.

2. solis: AVR lodēšana pie gaismas diodēm un skaļruņa

AVR lodēšana pie gaismas diodēm un skaļruņa
AVR lodēšana pie gaismas diodēm un skaļruņa
AVR lodēšana pie gaismas diodēm un skaļruņa
AVR lodēšana pie gaismas diodēm un skaļruņa

Lai gaismas diodes izstieptos kā rokas, viena tapa ir saliekta virs AVR katrā pusē. Šādi orientējot AVR, ir viegli pieslēgties skaļrunim (otrais attēls), jo savienojumi ir uz abām apakšējām tapām. Estētikas labad vēlaties, lai mikroshēmas priekšpuse būtu vērsta uz āru, tāpēc pārliecinieties, vai skaļrunis ir vērsts tāpat tas ir pievienots.

3. darbība: Attiny13a programmēšana

Attiny13a programmēšana
Attiny13a programmēšana

AVR programmēšanai ir daudz dažādu iespēju. Šim projektam tika izmantots USBtiny, kas ir pieejams kā komplekts no ladyada vietnes. Http://www.ladyada.net/make/usbtinyisp/index.html vai nu pievienojiet vadus sieviešu ligzdai, un pievienojiet tos maizes dēlim, vai vēl labāk iegādājieties lētu AVR programmēšanas adapteri, piemēram, šo https://www.sparkfun.com/commerce/product_info.php? products_id = 8508 kopā ar 3x2 vīriešu savienotājiem, lai pievienotu kontaktdakšu.

4. solis: programmaparatūras izveide Marioman

Programmatūras izveidošana Marioman
Programmatūras izveidošana Marioman

Attiny13A ir 1K programmējama zibspuldze un 64 baiti SRAM. Pievienotajam darvas failam ir avota fails, kā arī lejupielādēta programmaparatūra. Mūzikas ģenerēšanai tika izmantoti trīs masīvi c kodā

  • freq - katras notis frekvences
  • length - katras notis garums
  • delay - pauze starp katru noti

Frekvenču masīvam nav faktisko frekvenču, bet gan vērtība, kas jāievieto TTCROB reģistrā, lai ģenerētu kvadrātveida vilni no PB0 tapas. Šeit ir īss aprēķinu un tapu konfigurācijas kopsavilkums kvadrātveida viļņu ģenerēšanai:

  • Attiny13A ir iekšējais oscilators, kas iestatīts uz 9,6 MHz
  • IO iekšējais pulkstenis ir oscilators, kas dalīts ar 8 vai 1,2 MHz
  • Iekšējais taimeris ir iestatīts 8 bitu reģistrā, lai saskaitītu katru pulksteņa ciklu ar sākotnējo skalu 8.
  • Tā rezultātā viena ērce ir vienāda ar 1 / (1,2MHz / 8) =.006667ms
  • Attiny13A ir konfigurēts, lai salīdzinātu 8 bitu TCCR0B reģistra saturu ar taimeri un pārslēgtu tapu, kad tie sakrīt.
  • Piemēram, lai ģenerētu kvadrātveida vilni pie 524 Hz (viena oktāva virs vidējā C), kura periods ir 1,908 ms.

1.908ms = 286 pulksteņa ērces (1.908/.0067) Sadaliet 286 ar 2, lai pārslēgtu tapu pie t/2 (286/2 = 143) Ievietojiet 143 reģistrā TTCR0B, lai ģenerētu šo piezīmi. Šis ir viss nepieciešamais kods lai iestatītu taimeri, salīdziniet un izvadiet kvadrātveida vilni:

TCCR0A | = (1 << WGM01); // konfigurēt taimeri 1 CTC režīmam TCCR0A | = (1 << COM0A0); // pārslēgt OC0A salīdzināšanas mačā TCCR0B | = (1 << CS01); // clk/8 iepriekšēja mēroga TTCR0B = 143; // ģenerē kvadrātveida vilni pie 524 HzLai aizkavētu signālus un pauzes starp tiem, tika izmantota vienkārša aizkaves funkcija

tukšs miegs (int ms) {int cnt; par (cnt = 0; cnt <(ms); cnt ++) {int i = 150; kamēr (i--) {_asm ("NOP"); }}}Tas tiek skaitīts no 150, kur katrs NOP cikls ir aptuveni 0,006667 ms. Pēdējais, ko kods dara, ir cilpa caur masīviem, ģenerē mūziku un mirgo abas gaismas diodes. Tas tiek darīts nepārtrauktā ciklā ar šādu kodu

const uint8_t freq PROGMEM = {… dati}; const uint8_t garums PROGMEM = {… dati}; const uint8_t aizture PROGMEM = {… dati};… kamēr (1) {par (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); gulēt (pgm_read_byte (& length [cnt]))); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // apturēšanas taimeris TCCR0B = 0; gulēt (pgm_read_word (& delay [cnt]))); // sākuma taimeris TCCR0B | = (1 << CS01); // clk/8 prescale}}Frekvenču/garumu/aizkaves masīvos ir 156 elementi, šī cilpa tos šķērso. PIN PB3 un PB4 katrs ir pārslēgts, lai tie mainītos ar katru noti. Pirmais miega režīms ir notis, kuru mēs atskaņojam pēc OCR0A reģistra iestatīšanas uz atbilstošo vērtību. Otrais miegs ir pauze starp mūsu atskaņotajām notīm. Iepriekš redzamajā kodā jūs, iespējams, pamanīsit divas funkcijas pgm_read_byte () un pgm_read_word (), kā arī atslēgvārdu PROGMEM. Ar iegultu mikroshēmu, piemēram, attiny, SRAM apjoms ir ļoti ierobežots, šajā gadījumā tikai 64 baiti. Masīvi, kurus mēs izmantojam visiem frekvences/kavēšanās/garuma datiem, ir daudz lielāki par 64 baitiem, un tāpēc tos nevar ielādēt atmiņā. Izmantojot īpašo PROGMEM avr-gcc direktīvu, šie lielie datu masīvi tiek liegti ielādēt atmiņā, bet tiek nolasīti no zibspuldzes.

5. solis: ļaujiet mariomanam atbrīvoties

Iepriekš redzamajā video ir redzama Marioman darbībā. Vidējais enerģijas patēriņš ir aptuveni 25 mA, lai viņš varētu mirgot un radīt troksni apmēram 10 stundas pirms litija monētas iztukšošanas. Vienīgais veids, kā viņu ieslēgt un izslēgt, ir izņemt monētu elementu akumulatoru, materiālos uzskaitīto izturīgo. labi piemērots šim. Var pievienot slēdzi, taču ir kaut kas sakāms, lai tas būtu vienkāršs.

Ieteicams: