Агуулгын хүснэгт:
- Алхам 1: Материал ба барилгын ажил
- Алхам 2: AVR -ийг LED ба чанга яригч руу гагнах
- Алхам 3: Attiny13a програмчлах
- Алхам 4: Marioman -д зориулсан firmware үүсгэх
- Алхам 5: Мариоманыг сул тавь
Видео: Нүдээ анивчих, дуулах, Мариоман: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:06
Attiny13a, хоёр LED болон мэндчилгээний картын чанга яригчийг ашиглан Super Mario Brothers сэдэвт дууг тоглодог анивчдаг Мариоманыг бүтээгээрэй. дуунуудын тэмдэглэлийг AVR микроконтроллерийн ганц зүү дээр байрлуулсан дөрвөлжин долгионоор үүсгэсэн болно. Тэмдэглэл бүрт ээлжлэн орших LED нь ижил чип тус бүрийг 2 голтой холбодог.
Алхам 1: Материал ба барилгын ажил
1 attina13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCost: $ 1.40
- 2 LED - ямар ч LED хийх болно
- 1 литийн зоосны батерей
www.sparkfun.com/commerce/product_info.php?products_id=338 Зардал: $ 2.00
1 зоос эс эзэмшигч
www.sparkfun.com/commerce/product_info.php?products_id=8822 Зардал: $ 1.25
Хөгжмийн мэндчилгээний картаас 1 жижиг чанга яригч
Материалын нийт өртөг ~ $ 5 Хоёр LED -ийг attiny13A тус бүр хоёр голтой шууд холбосон. LED тус бүрт хоёр тээглүүр ашигладаг бөгөөд хоёр дахь зүүг газардуулгын холболт болгон ашиглахаар тохируулагдсан байдаг. AVR дээрх оролт/гаралтын одоогийн хязгаар нь LED -ийг хэт их зурахаас сэргийлдэг тул залгахад резистор шаардлагагүй болно. Цуврал. Ашигласан чанга яригч нь хөгжмийн мэндчилгээний картанд байдаг ердийн зүйл бөгөөд жижиг дөрвөлжин долгионы өнгө аяс өгч байгаа тул чанга яригч эсвэл дууны чанарт санаа зовох нь тийм ч чухал биш юм.
Алхам 2: AVR -ийг LED ба чанга яригч руу гагнах
LED нь гар шиг гараа сунгахын тулд AVR дээр нэг тээглүүрийг хоёр талд нь нугалав. AVR -ийг ингэж чиглүүлэх нь холбогч хоёр доод тээглүүр дээр байгаа тул чанга яригчтай (хоёр дахь зураг) холбогдоход хялбар болгодог. Гоо сайхны хувьд чипний урд талд нь харуулахыг хүсч байгаа тул чанга яригч яг ижилхэн тулгарч байгаа эсэхийг шалгаарай. үүнийг хавсаргасан болно.
Алхам 3: Attiny13a програмчлах
AVR програмчлах олон янзын сонголтууд байдаг. Энэхүү төслийн хувьд USBtiny -ийг ladyada -ийн сайтаас авах боломжтой https://www.ladyada.net/make/usbtinyisp/index.html AVR -ийг програмисттай холбохын тулд та Эмэгтэй залгуурт утсыг холбож, талхны тавцан дээр залгаарай, эсвэл хямд AVR програмчлалын адаптер худалдаж аваарай, жишээ нь:.
Алхам 4: Marioman -д зориулсан firmware үүсгэх
Attiny13A нь 1K програмчлагдах боломжтой флаштай, 64 битийн SRAM -тэй бөгөөд хавсаргасан tar файл нь эх файлтай бөгөөд татаж авахад зориулагдсан програм хангамжийг агуулдаг бөгөөд хөгжим үүсгэхэд c кодын гурван массивыг ашигласан болно.
- freq - тэмдэглэл бүрийн давтамж
- урт - тэмдэглэл бүрийн урт
- саатал - тэмдэглэл бүрийн хооронд түр зогсоох
Давтамжийн массив нь бодит давтамжтай биш, харин PB0 зүүгээс квадрат долгион үүсгэхийн тулд TTCROB бүртгэлд оруулах утгыг агуулдаг. Дөрвөлжин долгион үүсгэх тооцоолол, зүү тохируулгын товч тоймыг энд оруулав.
- Attiny13A нь 9.6МГц давтамжтай дотоод осциллятортой
- IO -ийн дотоод цаг нь 8 эсвэл 1.2 МГц -т хуваагддаг осциллятор юм
- Дотоод таймерыг 8 битийн регистрт тохируулж, цаг бүрийн мөчлөг бүрийг 8 -ийн урьдчилсан үнэлгээгээр тоолно.
- Үүний үр дүнд 1 / (1.2MHz / 8) =.006667ms -тай тэнцэх нэг тэмдэг гарч ирнэ
- Attiny13A нь 8 битийн TCCR0B бүртгэлд байгаа зүйлийг таймертай харьцуулж, таарах үед зүүг солихоор тохируулагдсан болно.
- Жишээлбэл, 590 Гц давтамжтай (С дундаас дээш нэг октав) 1.908 мс давтамжтай дөрвөлжин долгион үүсгэхийн тулд.
1.908ms = 286 цагны хачиг (1.908/.0067) 286 -г 2 -т хувааж, зүүг t/2 (286/2 = 143) дээр сэлгэнэ үү (286/2 = 143) Энэ тэмдэглэлийг гаргахын тулд TTCR0B бүртгэлд 143 -ийг оруулна уу. Энэ бол шаардлагатай бүх код юм. таймерыг тохируулахын тулд квадрат долгионыг харьцуулж гаргана уу.
TCCR0A | = (1 << WGM01); // таймер 1 -ийг CTC горимд тохируулах TCCR0A | = (1 << COM0A0); // харьцуулах тохиргоон дээр OC0A -ийг солих TCCR0B | = (1 << CS01); // clk/8 урьдчилсан хуваарь TTCR0B = 143; // 524 Гц давтамжтай дөрвөлжин долгион үүсгэнэДуу болон завсарлагааны хугацааг хойшлуулахын тулд хойшлуулах энгийн функцийг ашигласан
хоосон нойр (int ms) {int cnt; for (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("NOP"); }}}Энэ нь NOP -ийн мөчлөг бүр ойролцоогоор.006667ms байдаг 150 -аас тоологддог. Хамгийн сүүлд хийдэг код нь массивуудыг давтаж, хөгжим үүсгэж, хоёр LED -ийг анивчих явдал юм.
const uint8_t freq PROGMEM = {… өгөгдөл}; const uint8_t урт PROGMEM = {… өгөгдөл}; const uint8_t саатал PROGMEM = {… өгөгдөл};… байхад (1) {for (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); унтах (pgm_read_byte (& урт [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // зогсоох таймер TCCR0B = 0; унтах (pgm_read_word (& хойшлуулах [cnt]))); // эхлэх таймер TCCR0B | = (1 << CS01); // clk/8 урьдчилсан үнэлгээ}}Давтамж/урт/хоцролтын массивт 156 элемент байдаг бөгөөд энэ давталт тэдгээрийг дайран өнгөрдөг. PB3 ба PB4 зүү тус бүрийг хооронд нь сэлгэн залгах тул эхний унтах нь OCR0A регистрийг зохих утгад оруулсны дараа бидний тоглодог тэмдэглэлийн урт юм. Хоёр дахь унтах нь бидний тоглодог нотуудын хоорондох завсарлага юм. Дээрх код дээр та pgm_read_byte () ба pgm_read_word () гэсэн хоёр функц болон PROGMEM түлхүүр үгийг анзаарсан байж магадгүй. Attini шиг суулгагдсан чиптэй бол SRAM -ийн хэмжээ маш хязгаарлагдмал бөгөөд энэ тохиолдолд зөвхөн 64 байт байдаг. Бидний давтамж/саатал/уртын бүх өгөгдөлд ашигладаг массивууд нь 64 байтаас хамаагүй том тул санах ойд ачаалах боломжгүй юм. Тусгай PROGMEM avr-gcc удирдамжийг ашигласнаар эдгээр том өгөгдлийн массивуудыг санах ойд ачаалахаас сэргийлж, харин флэшээс уншдаг.
Алхам 5: Мариоманыг сул тавь
Дээрх видеон дээр Мариоман хэрхэн ажиллаж байгааг харуулжээ. Цахилгаан эрчим хүчний дундаж хэрэглээ нь ойролцоогоор 25 мА байдаг тул литийн зоосыг шавхахаасаа өмнө 10 орчим цагийн турш анивчиж, дуу чимээ гаргаж чаддаг. Түүнийг асаах, унтраах цорын ганц арга бол зоосны батерейг салгах явдал юм. үүнд маш тохиромжтой. Шилжүүлэгч нэмж болно, гэхдээ үүнийг энгийн байлгахын тулд хэлэх зүйл байна.
Зөвлөмж болгож буй:
Мобайлаар дамжуулан Arduino програмчлал -- Ардуинодроид -- Android -д зориулсан Arduino Ide -- Нүдээ анивчих: 4 алхам
Мобайлаар дамжуулан Arduino програмчлал || Ардуинодроид || Android -д зориулсан Arduino Ide || Blink: Миний youtube сувагт бүртгүүлээд илүү олон видео үзээрэй …… Arduino бол USB -ээр шууд програмчлах боломжтой самбар юм. Энэ нь коллеж, сургуулийн төсөл, тэр ч байтугай бүтээгдэхүүний прототипт маш энгийн бөгөөд хямд байдаг. Ихэнх бүтээгдэхүүнүүд үүнд тулгуурлан бүтээгддэг
Arduino Uno заавар #1 - Нүдээ анивчих үндсэн програм: 4 алхам
Arduino Uno заавар #1 - Нүдээ анивчих үндсэн хөтөлбөр: Бүгдээрээ сайн байцгаана уу! Анхны зааварчилгаагаа нийтэлж байгаадаа баяртай байна! Энэ санаа надад Arduino Uno -г ажиллуулахад бэрхшээлтэй тулгарсан үед надад ирсэн тул зарим бэрхшээлтэй тулгарсан тул би энд байгаа бусад хүмүүст тайлбар өгөх болно
Arduino Nutcracker дуулах: 8 алхам
Arduino Nutcracker дуулж байна: Энэхүү самарчин нь оролтын аудио дээр үндэслэн ам нээдэг. Гуйлж буй хүн овоолсон хэсгээс дуулах самар хүртэл 3 цагийн дотор амархан хийж болно. Энэхүү төслийн хувьд танд хөдлөх амтай Nutcracker хэрэгтэй болно
Дуулах Bust Prop: 7 алхам
Singing Bust Prop: Та Haunted Mansion дахь дуулж буй бюст хэрхэн ажилладаг талаар бодож байсан уу, эсвэл бүр сайн болгохыг оролдож үзэхийг хүсч байсан уу, энэ зааварчилгаа нь тэдгээрийг хэрхэн яаж хийхийг, үнэхээр энгийн болохыг харуулах болно
Шүршүүрт илүү сайн дуулах зориулалттай ус нэвтэрдэггүй чанга яригч: 12 алхам (зурагтай)
Илүү сайн шүршүүрт зориулсан ус нэвтэрдэггүй чанга яригч: Хэрэв та надтай адилхан бол бас би чамайг мэддэг-чи шүршүүрт орохдоо дуулах ХАЙРТАЙ бөгөөд үүний хажуугаар ХӨХӨӨРӨХ Аймшигтай дуулах хоолойтой байхын тулд би юу ч хийж чадахгүй, гэхдээ энэ нь намайг, магадгүй миний хоолойн хүрээнд байгаа бусад хүмүүсийг үнэхээр зовоодог