Orodha ya maudhui:
- Hatua ya 1: Vifaa na Ujenzi
- Hatua ya 2: Kugundisha AVR kwa LED na Spika
- Hatua ya 3: Kupanga Attiny13a
- Hatua ya 4: Kuunda Firmware ya Marioman
- Hatua ya 5: Kumwachia Marioman Afunguke
Video: Kupepesa, Kuimba, Marioman: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:56
Tumia attiny13a, LED mbili na spika ya kadi ya salamu kuunda Marioman inayoangaza ambayo hucheza wimbo wa mandhari wa Super Mario Brothers. Hii inaweza kuwa mradi wa gharama nafuu kwa kila mtu ambaye anatafuta njia ya kufurahisha ya kuingia kwenye programu ya AVR! maelezo ya nyimbo hutengenezwa na wimbi la mraba lililotolewa kwenye pini moja ya microcontroller ya AVR. Taa zinazobadilisha kila daftari zimeunganishwa na pini 2 kila moja ya chip sawa.
Hatua ya 1: Vifaa na Ujenzi
1 kiambatisho13a
Gharama: $ 1.40
- LED 2 - LEDs yoyote itafanya
- 1 betri ya seli ya lithiamu
www.sparkfun.com/commerce/product_info.php?products_id=338 Gharama: $ 2.00
Mmiliki wa seli 1 ya sarafu
www.sparkfun.com/commerce/product_info.php?products_id=8822Gharama: $ 1.25
Spika 1 ndogo kutoka kwa kadi ya salamu ya muziki
Gharama ya jumla ya vifaa ~ $ 5 LED mbili ziliambatanishwa moja kwa moja kwenye pini mbili kila moja ya attiny13A. Pini mbili hutumiwa kwa kila LED, pini ya pili imewekwa chini ili kutumiwa kama unganisho la ardhi. Kikomo cha sasa cha pini za I / O kwenye AVR kitazuia taa za LED kuteka sana kwa hivyo kontena sio lazima kuungana Msemaji anayetumiwa ni kawaida ya ile inayopatikana kwenye kadi ya salamu ya muziki, spika yoyote ndogo itafanya, ikizingatiwa kuwa hii inatoa sauti ya wimbi la mraba, sio muhimu sana kuwa na wasiwasi juu ya kuendesha spika au ubora wa sauti.
Hatua ya 2: Kugundisha AVR kwa LED na Spika
Ili taa ziweze kufikia mikono kama pini moja imeinama juu ya AVR kila upande. Kuelekeza AVR kwa njia hii inafanya iwe rahisi kuungana na spika (picha ya pili) kwa kuwa unganisho liko kwenye pini mbili za chini. imeambatanishwa.
Hatua ya 3: Kupanga Attiny13a
Kuna chaguzi nyingi tofauti za programu za AVR. Kwa mradi huu USBtiny ilitumika ambayo inapatikana kama kit kutoka kwa tovuti ya ladyadahttps://www.ladyada.net/make/usbtinyisp/index.html Kuunganisha AVR kwa programu unaweza ama ambatisha waya kwenye tundu la kike na uzibe kwenye ubao wa mkate au bora upate adapta ya bei rahisi ya programu ya AVR kama hii https://www.sparkfun.com/commerce/product_info.php?.
Hatua ya 4: Kuunda Firmware ya Marioman
Attiny13A ina 1K ya flash inayoweza kupangiliwa, na 64byte za SRAM. Faili ya tar iliyoambatanishwa ina faili ya chanzo na vile vile imekusanya firmware ya kupakua.
- freq - masafa ya kila maandishi
- urefu - urefu wa kila noti
- kuchelewesha - pumzika kati ya kila dokezo
Safu ya masafa haina masafa halisi lakini badala ya thamani ya kuweka kwenye rejista ya TTCROB ili kutoa wimbi la mraba kutoka kwenye pini ya PB0. Hapa kuna muhtasari mfupi wa mahesabu na usanidi wa pini kwa kizazi cha wimbi la mraba:
- Attiny13A ina oscillator ya ndani iliyowekwa kwa 9.6MHz
- Saa ya ndani ya IO ni oscillator iliyogawanywa na 8 au 1.2MHz
- Kipima muda cha ndani ni kusanikisha katika rejista ya 8bit ili kuhesabu kila mzunguko wa saa na muhtasari wa 8.
- Hii inasababisha kupe moja sawa na 1 / (1.2MHz / 8) =.006667ms
- Attiny13A imeundwa kulinganisha kile kilicho kwenye rejista ya 8bit TCCR0B na kipima muda na toa pini zinapolingana.
- Kwa mfano, ili kutengeneza wimbi la mraba kwa 524Hz (octave moja juu ya katikati C) ambayo ina kipindi cha 1.908ms.
1.908ms = kupe za saa 286 (1.908 /.0067) Gawanya 286 na 2 kugeuza pini kwa t / 2 (286/2 = 143) Weka 143 kwenye rejista ya TTCR0B ili kutoa noti hii. Nambari hii yote ni muhimu kuanzisha kipima muda, fanya kulinganisha na kutoa wimbi la mraba:
TCCR0A | = (1 << WGM01); // sanidi kipima muda 1 cha hali ya CTC TCCR0A | = (1 << COM0A0); // toggle OC0A on kulinganisha mechi TCCR0B | = (1 << CS01); // clk / 8 prescale TTCR0B = 143; // tengeneza wimbi la mraba kwa 524HzKuchelewesha tani na mapumziko kati yao kazi rahisi ya kuchelewesha ilitumika
kulala tupu (int ms) {int cnt; kwa (cnt = 0; cnt <(ms); cnt ++) {int i = 150; wakati (i--) {_asm ("NOP"); }}}Hii inahesabu kutoka 150 ambapo kila mzunguko wa NOP ni takriban.006667ms. Jambo la mwisho nambari hufanya ni kuzunguka kwa safu, kutoa muziki na kupepesa LED mbili. Hii inafanywa kwa kitanzi kinachoendelea na nambari ifuatayo.
const uint8_t freq PROGMEM = {… data}; const uint8_t urefu PROGMEM = {… data}; 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); pato_badili (PORTB, PB3); pato_badili (PORTB, PB4); kulala (pgm_read_byte (& urefu [cnt])); pato_badili (PORTB, PB3); pato_badili (PORTB, PB4); // kipima muda TCCR0B = 0; kulala (pgm_read_wordword (& kuchelewesha [cnt])); // kuanza kipima muda TCCR0B | = (1 << CS01); // clk / 8 kielelezo}}Kuna vitu 156 katika masafa / urefu / safu za kuchelewesha, kitanzi hiki hupita. Pini PB3 na PB4 kila moja imebadilishwa ili wabadilike na kila dokezo Usingizi wa kwanza ni urefu wa noti tunayocheza baada ya kuweka rejista ya OCR0A kwa thamani inayofaa. Kulala kwa pili ni pause kati ya noti tunazocheza. Katika nambari hapo juu unaweza kuona kazi mbili pgm_read_byte () na pgm_read_word () pamoja na neno kuu PROGMEM Kwa chip iliyowekwa kama kiwango cha SRAM ni mdogo sana, katika kesi hii ni 64bytes tu. Safu tunazotumia kwa data zote za masafa / kuchelewesha / urefu ni kubwa zaidi kuliko 64byte na kwa hivyo haiwezi kupakiwa kwenye kumbukumbu. Kwa kutumia maagizo maalum ya PROGMEM avr-gcc safu hizi kubwa za data zinazuiwa kupakia kwenye kumbukumbu, badala yake zinasomwa kutoka kwa flash.
Hatua ya 5: Kumwachia Marioman Afunguke
Video hapo juu inaonyesha Marioman akifanya kazi. Matumizi ya nguvu wastani ni karibu 25mA ili aweze kupepesa na kupiga kelele kwa masaa kama 10 kabla ya kukimbia kiini cha sarafu ya lithiamu. Njia pekee ya kumzima na kuzima ni kuondoa betri ya seli ya sarafu, iliyo imara iliyoorodheshwa kwenye vifaa ni inafaa kwa hili. Kubadili kunaweza kuongezwa lakini kuna kitu cha kusema kwa kuiweka rahisi.
Ilipendekeza:
Picha ndogo ya kupepesa LED: Hatua 6
Kielelezo kidogo cha kupepesa LED: Unaweza kupepesa kwa urahisi LED na arduino au kipima muda cha 555. Lakini Unaweza kufanya mzunguko wa kupepesa bila IC hizo. Hii ni takwimu rahisi ya kupepesa iliyotengenezwa kutoka sehemu tofauti
Arduino: Kuimba Sanduku la Siku ya kuzaliwa kwa zawadi: Hatua 14
Arduino: Kuimba Sanduku la Kuzaliwa kwa Zawadi: Sanduku hili la Kuimba la Kuzaliwa limetengenezwa kwa kusudi la kupakia zawadi za siku ya kuzaliwa, ikisaidiwa na Arduino kutoa kazi maalum, pamoja na kuimba na kuwasha Mshumaa wa LED. Pamoja na uwezo wa kuimba Wimbo wa Kuzaliwa wa Furaha na kuwasha mwangaza wa LED
Kuimba Arduino Nutcracker: Hatua 8
Kuimba Arduino Nutcracker: Nutcracker hii inafungua kinywa chake kulingana na sauti ya uingizaji. Inaweza kufanywa kwa urahisi chini ya masaa 3 kwa anayeanza kwenda kutoka kwenye rundo la sehemu kwenda kwa nutcracker ya kuimba. Kwa mradi huu, utahitaji Nutcracker na mdomo unaohamishika, mfano
Kuimba Bust Prop: Hatua 7
Kuimba Bust Prop: Je! Umewahi kujiuliza ni vipi Mabasi ya Kuimba katika Jumba la Haunted yalifanya kazi au hata alitaka kujaribu kuwafanya vizuri hii inayoweza kufundishwa itakuonyesha jinsi ya kuzifanya na ni rahisi sana
Arduino Theremin Kuimba Muppet: Hatua 6 (na Picha)
Arduino Theremin Kuimba Muppet: Kwa mradi wa shule kuhusu Arduino niliunda muppet na theremin iliyojengwa ili kuifanya iwe kuimba kuimba. Ndani ya mdomo wake kuna picha ambayo inaunganisha na buzzer ya Piezo ili ukifungua na kufunga mdomo wake, uwanja utabadilika (mkali