Talaan ng mga Nilalaman:
- Hakbang 1: Mga Materyales at Konstruksyon
- Hakbang 2: Pag-solder ng AVR sa mga LED at Speaker
- Hakbang 3: Programming ang Attiny13a
- Hakbang 4: Paglikha ng Firmware para kay Marioman
- Hakbang 5: Hinahayaan ang Marioman na Malaya
Video: Kumukurap, Kumakanta, Marioman: 5 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:16
Gumamit ng isang attiny13a, dalawang LEDs at isang speaker card ng pagbati upang lumikha ng isang kumikislap na Marioman na nagpe-play ng kanta ng tema ng Super Mario Brothers. Ito ay maaaring isang madaling proyekto na mababa ang gastos para sa sinumang naghahanap ng isang kasiya-siyang paraan upang masira ang programa ng AVR! Ang ang mga tala ng mga kanta ay nabuo ng isang square wave na na-output sa isang solong pin ng AVR microcontroller. Ang mga LED na kahalili sa bawat tala ay konektado sa 2 mga pin bawat isa sa parehong chip.
Hakbang 1: Mga Materyales at Konstruksyon
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCost: $ 1.40
- 2 LEDs - anumang mga LEDs ay gagawin
- 1 baterya ng lithium coin cell
www.sparkfun.com/commerce/product_info.php?productions_id=338Gastos: $ 2.00
1 may hawak ng coin coin
www.sparkfun.com/commerce/product_info.php?products_id=8822Cost: $ 1.25
1 maliit na speaker mula sa isang musikal na kard ng pagbati
Kabuuang halaga ng mga materyales ~ $ 5Ang dalawang LEDs ay nakalakip nang direkta sa dalawang mga pin bawat isa sa attiny13A. Ang dalawang pin ay ginagamit para sa bawat LED, ang pangalawang pin ay itinakda nang mababa upang magamit bilang koneksyon sa lupa. Ang kasalukuyang limitasyon ng mga I / O na pin sa AVR ay pipigilan ang mga LED mula sa pagguhit ng labis kaya't ang isang risistor ay hindi kinakailangan upang kumonekta serye. Ang ginamit na tagapagsalita ay tipikal ng isang matatagpuan sa isang musikal na kard ng pagbati, gagawin ng anumang maliit na tagapagsalita, na nagbibigay ito ng isang tono ng square wave, hindi masyadong mahalaga na mag-alala tungkol sa pagmamaneho ng speaker o kalidad ng tunog.
Hakbang 2: Pag-solder ng AVR sa mga LED at Speaker
Para sa mga LED na maabot tulad ng mga bisig ang isang pin ay baluktot sa AVR sa bawat panig. Ang pag-orient sa AVR sa ganitong paraan ay ginagawang madali upang kumonekta sa nagsasalita (pangalawang imahe) dahil ang mga koneksyon ay nasa dalawang ilalim na pin. Para sa mga estetika na nais mo sa harap ng maliit na tilad na nakaharap upang matiyak na ang nagsasalita ay nakaharap sa parehong paraan kapag nakakabit na.
Hakbang 3: Programming ang Attiny13a
Mayroong maraming iba't ibang mga pagpipilian para sa pag-program ng mga AVR. Para sa proyektong ito ang USBtiny ay ginamit na magagamit bilang isang kit mula sa sitada ng ladyada alinman sa maglakip ng mga wires sa babaeng socket at i-plug ang mga ito sa isang breadboard o mas mahusay na makakuha ng isang murang AVR program adapter tulad nito.
Hakbang 4: Paglikha ng Firmware para kay Marioman
Ang attiny13A ay may 1K ng programmable flash, at 64bytes ng SRAM. Ang naka-attach na file ng tar ay mayroong mapagkukunan ng file pati na rin ang pinagsamang firmware para sa pag-download. Tatlong mga array sa c code ang ginamit upang makabuo ng musika
- freq - mga dalas ng bawat tala
- haba - haba ng bawat tala
- antala - huminto sa pagitan ng bawat tala
Ang array ng dalas ay walang aktwal na mga frequency ngunit sa halip ang halaga na ilagay sa rehistro ng TTCROB upang makabuo ng square wave mula sa PB0 pin. Narito ang isang maikling buod ng mga kalkulasyon at pagsasaayos ng pin para sa pagbuo ng square wave:
- Ang attiny13A ay may panloob na oscillator na nakatakda sa 9.6MHz
- Ang panloob na orasan para sa IO ay ang oscillator na hinati ng 8 o 1.2MHz
- Ang isang panloob na timer ay naka-set up sa isang rehistro ng 8bit upang mabilang ang bawat ikot ng orasan na may prescale na 8.
- Nagreresulta ito sa isang tick na katumbas ng 1 / (1.2MHz / 8) =.006667ms
- Ang attiny13A ay naka-configure upang ihambing kung ano ang nasa 8bit na rehistro ng TCCR0B sa timer at magpalipat-lipat ng isang pin kapag tumugma sila.
- Halimbawa, upang makabuo ng isang square alon sa 524Hz (isang oktaba sa itaas ng gitnang C) na may isang panahon na 1.908ms.
1.908ms = 286 mga ticks ng orasan (1.908 /.0067) Hatiin ang 286 ng 2 upang i-toggle ang pin sa t / 2 (286/2 = 143) Ilagay ang 143 sa rehistro ng TTCR0B upang makabuo ng tala na ito. Ito ang lahat ng code na kinakailangan upang i-set up ang timer, gawin ang paghahambing at paglabas ng isang square wave:
TCCR0A | = (1 << WGM01); // configure timer 1 para sa CTC mode TCCR0A | = (1 << COM0A0); // toggle OC0A on match match TCCR0B | = (1 << CS01); // clk / 8 prescale TTCR0B = 143; // makabuo ng square square sa 524HzUpang maantala ang mga tono at ang mga pag-pause sa pagitan ng mga ito isang simpleng pagpapaandar na pagpapaandar ang ginamit
walang bisa ang pagtulog (int ms) {int cnt; para sa (cnt = 0; cnt <(ms); cnt ++) {int i = 150; habang (i--) {_asm ("NOP"); }}}Bumibilang ito mula sa 150 kung saan ang bawat ikot ng NOP ay humigit-kumulang na.006667ms. Ang huling bagay na ginagawa ng code ay loop sa pamamagitan ng mga arrays, bumuo ng musika at kumurap ng dalawang LEDs. Ginagawa ito sa isang tuloy-tuloy na loop para sa sumusunod na code
const uint8_t freq PROGMEM = {… data}; const uint8_t haba PROGMEM = {… data}; const uint8_t antala PROGMEM = {… data};… habang (1) {para sa (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); pagtulog (pgm_read_byte (& haba [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // stop timer TCCR0B = 0; pagtulog (pgm_read_word (& antala [cnt])); // start timer TCCR0B | = (1 << CS01); // clk / 8 prescale}}Mayroong 156 na mga elemento sa mga frequency / haba / pagkaantala ng mga arrays, ang loop na ito ay dumaan sa kanila. Ang Pin PB3 at PB4 ay bawat isa ay pinalitan upang sila ay kahalili sa bawat tala Ang unang pagtulog ay ang haba ng tala na nilalaro namin pagkatapos na maitakda ang rehistro ng OCR0A sa naaangkop na halaga. Ang pangalawang pagtulog ay ang pag-pause sa pagitan ng mga tala na nilalaro namin. Sa code sa itaas maaari mong mapansin ang dalawang pagpapaandar pgm_read_byte () at pgm_read_word () pati na rin ang keyword na PROGMEM. Sa isang naka-embed na maliit na tilad tulad ng matalinong ang halaga ng SRAM ay napakalimitado, sa kasong ito 64bytes lamang. Ang mga array na ginagamit namin para sa lahat ng data ng dalas / pagkaantala / haba ay mas malaki kaysa sa 64bytes at samakatuwid ay hindi mai-load sa memorya. Sa pamamagitan ng paggamit ng espesyal na PROGMEM avr-gcc directive ang mga malalaking arrays ng data na ito ay maiiwasang mai-load sa memorya, sa halip ay mabasa ito mula sa flash.
Hakbang 5: Hinahayaan ang Marioman na Malaya
Ipinapakita ng video sa itaas ang pagkilos ni Marioman. Ang average na pagkonsumo ng kuryente ay tungkol sa 25mA kaya maaari siyang magpikit at makagawa ng mga ingay nang halos 10 oras bago maubos ang lithium coin cell. Ang tanging paraan lamang upang paandarin siya at patayin ay alisin ang baterya ng coin cell, ang matibay na nakalista sa mga materyales ay angkop para dito. Maaaring idagdag ang isang switch ngunit may sasabihin para sa pagpapanatili nito na simple.
Inirerekumendang:
Arduino Car Reverse Parking Alert System - Hakbang sa Hakbang: 4 na Hakbang
Arduino Car Reverse Parking Alert System | Hakbang sa Hakbang: Sa proyektong ito, magdidisenyo ako ng isang simpleng Arduino Car Reverse Parking Sensor Circuit gamit ang Arduino UNO at HC-SR04 Ultrasonic Sensor. Ang Arduino based Car Reverse alert system na ito ay maaaring magamit para sa isang Autonomous Navigation, Robot Ranging at iba pang range r
Hakbang sa Hakbang Pagbubuo ng PC: 9 Mga Hakbang
Hakbang sa Hakbang ng PC Building: Mga Pantustos: Hardware: MotherboardCPU & CPU coolerPSU (Power supply unit) Storage (HDD / SSD) RAMGPU (hindi kinakailangan) CaseTools: ScrewdriverESD bracelet / matsthermal paste w / applicator
Tatlong Loudspeaker Circuits -- Hakbang-hakbang na Tutorial: 3 Mga Hakbang
Tatlong Loudspeaker Circuits || Hakbang-hakbang na Tutorial: Ang Loudspeaker Circuit ay nagpapalakas ng mga audio signal na natanggap mula sa kapaligiran papunta sa MIC at ipinapadala ito sa Speaker mula sa kung saan ginawa ang pinalakas na audio. Dito, ipapakita ko sa iyo ang tatlong magkakaibang paraan upang magawa ang Loudspeaker Circuit na ito gamit ang:
Hakbang-hakbang na Edukasyon sa Robotics Na May Kit: 6 Mga Hakbang
Hakbang-hakbang na Edukasyon sa Robotics Gamit ang isang Kit: Matapos ang ilang buwan ng pagbuo ng aking sariling robot (mangyaring sumangguni sa lahat ng mga ito), at pagkatapos ng dalawang beses na pagkabigo ng mga bahagi, nagpasya akong bumalik at muling isipin ang aking diskarte at direksyon. Ang karanasan ng ilang buwan ay kung minsan ay lubos na nagbibigay-pakinabang, at
Kritikal na Hakbang sa Paghuhugas ng Kamay sa Hakbang: 5 Hakbang
Kritikal na Hakbang sa Paghuhugas ng Hakbang sa paghuhugas ng kamay: Ito ay isang makina na nagpapaalala sa gumagamit tungkol sa mga hakbang kung kailan kailangan niyang maghugas ng kanyang mga kamay. Ang layunin ng makina na ito ay matulungan ang mga tao na maunawaan kung paano hugasan nang maayos ang kanilang mga kamay sa isang mabisang paraan. Sa mga panahon ng pag-iwas sa epidemya o pandemya,