Mundarija:
- 1 -qadam: Materiallar va qurilish
- 2 -qadam: AVRni LED va dinamikga lehimlash
- 3 -qadam: Attiny13a dasturlash
- 4 -qadam: Marioman uchun dasturiy ta'minotni yaratish
- 5 -qadam: Mariomanni bo'sh qoldiring
Video: Miltillovchi, qo'shiq aytuvchi, marioman: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:29
"Super Mario Brothers" mavzusidagi qo'shiqni ijro etuvchi miltillovchi Mariomanni yaratish uchun attiny13a, ikkita LED va tabrik kartasi karnayidan foydalaning. qo'shiqlarning yozuvlari AVR mikrokontrolerining bitta pinida chiqarilgan to'rtburchaklar to'lqin yordamida yaratiladi. Har bir notada bir -birini almashtiradigan LEDlar bir xil chipning har biriga 2 pinli ulanadi.
1 -qadam: Materiallar va qurilish
1 attina13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCost: $ 1.40
- 2 LED - har qanday LED ishlaydi
- 1 lityum tanga batareyali batareya
www.sparkfun.com/commerce/product_info.php?products_id=338 Narxi: $ 2.00
1 ta tanga xujayrasi ushlagichi
www.sparkfun.com/commerce/product_info.php?products_id=8822 Narxi: $ 1.25
Musiqiy tabriknomadan 1 ta kichik dinamik
Materiallarning umumiy qiymati ~ $ 5 Ikki LED to'g'ridan -to'g'ri ikkita pinga ulangan. Har bir LED uchun ikkita pin ishlatiladi, ikkinchi pin esa erga ulanish uchun past qilib o'rnatiladi. AVR -dagi kirish -chiqish pinlarining joriy chegarasi LEDlarning haddan tashqari ko'p chizilishiga to'sqinlik qiladi, shuning uchun rezistorni ulash shart emas. Ishlatiladigan karnay musiqiy tabriknomada uchraydi, har qanday kichkina ma'ruzachi buni qiladi, chunki bu kvadrat to'lqinli ohangni chiqaradi, dinamikni haydash yoki ovoz sifati haqida tashvishlanish juda muhim emas.
2 -qadam: AVRni LED va dinamikga lehimlash
LEDlar qo'llar kabi cho'zilishi uchun AVRning har bir tomonida bitta pin egilgan. AVR -ni shu tarzda yo'naltirish, karnayga (ikkinchi rasm) ulanishni osonlashtiradi, chunki ulanishlar ikkita pastki pimda. Estetika uchun siz chipning old tomoniga qaragan bo'lishni xohlaysiz, shuning uchun karnay xuddi shu tomonga qaraganligiga ishonch hosil qiling. u biriktirilgan.
3 -qadam: Attiny13a dasturlash
AVR -ni dasturlash uchun juda ko'p turli xil variantlar mavjud, bu loyiha uchun USBtiny ishlatilgan bo'lib, u ladyada saytining to'plami sifatida mavjud https://www.ladyada.net/make/usbtinyisp/index.html yoki ayol rozetkaga simlar ulang va ularni taxtaga ulang, yoki arzonroq AVR dasturlash adapterini oling, masalan: vilkasini ulash uchun 3x2 erkak sarlavhasi bilan..
4 -qadam: Marioman uchun dasturiy ta'minotni yaratish
Attiny13A -da 1K dasturlashtiriladigan fleshka va 64 -baytli SRAM bor, biriktirilgan tar fayli manba fayli va yuklab olish uchun dasturiy ta'minotni o'z ichiga oladi. Musiqani yaratish uchun c kodidagi uchta qator ishlatilgan.
- freq - har bir notaning chastotalari
- uzunlik - har bir notaning uzunligi
- kechiktirish - har bir nota o'rtasida pauza
Chastotalar qatori haqiqiy chastotalarga ega emas, balki PB0 pinidan kvadrat to'lqin hosil qilish uchun TTCROB reestriga qo'yiladigan qiymatga ega. Bu erda kvadrat to'lqinlarni yaratish uchun hisoblar va pin konfiguratsiyasining qisqacha mazmuni:
- Attiny13A 9,6 MGts ga o'rnatilgan ichki osilatorga ega
- IO uchun ichki soat - bu 8 yoki 1,2 MGts ga bo'lingan osilator
- Ichki taymer 8 bitli registrda o'rnatiladi, u har bir soat tsiklini 8 ga oldindan hisoblab chiqadi.
- Bu 1 / (1,2MGts / 8) =.006667ms ga teng bo'lgan bitta belgiga olib keladi
- Attiny13A 8 bitli TCCR0B registridagi narsalarni taymer bilan solishtirish va ular mos kelganda pinni almashtirish uchun tuzilgan.
- Masalan, 524 Gts chastotali (C o'rtasidan bir oktava) kvadrat to'lqin hosil qilish uchun, uning davri 1.908 ms.
1.908ms = 286 soat (1.908/.0067) 286 ni 2 ga bo'linib, pinni t/2 ga aylantiring (286/2 = 143) Bu yozuvni yaratish uchun TTCR0B reestriga 143 ni qo'ying. taymerni sozlash uchun kvadrat to'lqinni solishtiring va chiqaring:
TCCR0A | = (1 << WGM01); // CTC rejimi uchun taymer 1ni sozlash TCCR0A | = (1 << COM0A0); // TCCR0B solishtirish moslamasida OC0A -ni almashtirish | = (1 << CS01); // clk/8 oldindan o'lchovli TTCR0B = 143; // 524 gigagertsli kvadrat to'lqin hosil qiladiOhanglar va ular orasidagi pauzalarni kechiktirish uchun oddiy kechiktirish funktsiyasi ishlatilgan
bo'sh uyqu (int ms) {int cnt; uchun (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("YO'Q"); }}}Bu har bir NOP tsikli taxminan.006667ms ni tashkil etadigan 150 dan hisoblab chiqadi. Oxirgi kod - massivlarni aylanib o'tish, musiqani yaratish va ikkita LEDni miltillatish.
const uint8_t freq PROGMEM = {… ma'lumotlar}; const uint8_t uzunligi PROGMEM = {… ma'lumotlar}; const uint8_t kechikishi PROGMEM = {… ma'lumotlar};… esa (1) {uchun (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& frek [cnt]); chiqish_toggle (PORTB, PB3); chiqish_toggle (PORTB, PB4); uyqu (pgm_read_byte (& length [cnt])); chiqish_toggle (PORTB, PB3); chiqish_toggle (PORTB, PB4); // to'xtash taymeri TCCR0B = 0; uxlash (pgm_read_word (& kechiktirish [cnt]))); // taymerni ishga tushirish TCCR0B | = (1 << CS01); // clk/8 oldindan o'lchov}}Chastotalar/uzunliklar/kechikish massivlarida 156 ta element bor, bu halqa ularni kesib o'tadi. PB3 va PB4 pinlari bir -biridan almashtiriladi, shuning uchun ular har bir eslatma bilan almashtiriladi. Birinchi uyqu - bu OCR0A registrini mos qiymatga o'rnatganimizdan so'ng, biz o'ynaydigan notaning uzunligi. Ikkinchi uyqu - bu biz o'ynaydigan notalar orasidagi pauza. Yuqoridagi kodda siz pgm_read_byte () va pgm_read_word () ikkita funktsiyasini, shuningdek PROGMEM kalit so'zini sezishingiz mumkin. Biz barcha chastota/kechikish/uzunlik ma'lumotlari uchun foydalanadigan qatorlar 64 baytdan kattaroqdir va shuning uchun ularni xotiraga yuklab bo'lmaydi. Maxsus PROGMEM avr-gcc ko'rsatmasidan foydalangan holda, bu katta hajmli ma'lumotlar xotiraga yuklanishining oldini oladi, aksincha ular fleshdan o'qiladi.
5 -qadam: Mariomanni bo'sh qoldiring
Yuqoridagi videoda Mariomanning harakati ko'rsatilgan. O'rtacha quvvat sarfi taxminan 25mA, shuning uchun u lityum tanga xujayrasini to'kib tashlashdan oldin taxminan 10 soat davomida miltillashi va shovqin chiqarishi mumkin, uni yoqish va o'chirishning yagona yo'li - tanga batareyali batareyani olib tashlash, materiallarda ko'rsatilgan mustahkam. buning uchun juda mos keladi. Kalitni qo'shish mumkin, lekin uni sodda saqlash uchun aytish kerak.
Tavsiya:
PUBG mavzusidagi qo'shiq+Arduino bilan animatsiya!: 13 qadam (rasmlar bilan)
PUBG mavzusidagi qo'shiq+animatsiya Arduino bilan!: Salom va bu qiziqarli darsga xush kelibsiz! Hammangiz sog' -salomat bo'lishingizni tilayman. Bu kichik, ammo ajoyib loyiha PUBG mavzusidagi qo'shiqni ijro etish va hatto arduino yordamida o'yin animatsiyalarini yaratishdir
Yomg'irli qo'shiq (tugallanmagan): 10 qadam
Yomg'irli qo'shiq (tugallanmagan): Biz odamlar bir xil ovozda yomg'ir yog'adigan muhitda ovozga ko'proq e'tibor qaratib, ijobiy javob olishdan manfaatdor edik. Shunday qilib, maqsad pul to'lashdir
Zelda qo'shiq o'yinchisi: 4 qadam
Zelda qo'shiq o'yinchisi: Ushbu yo'riqnomada men sizga Arduino Uno-ga asoslangan qurilmani qanday yig'ishni ko'rsataman, Zelda afsonasi: Vaqt Ocarinasining birinchi oltita qo'shig'ini ijro etish uchun Nintendo 64 boshqaruvini qayta yaratish. U Zeldaning Lullabyini, Sariyaning qo'shig'ini, qo'shig'ini o'ynashi mumkin
Video eshik qo'ng'irog'ini raqamli qo'shiq qo'ng'irog'iga moslashtirish: 5 qadam
Video eshik qo'ng'irog'ini raqamli qo'shiq qo'ng'irog'iga moslashtirish: Qisqasi, Best Buy menga Simplisafe eshik qo'ng'irog'ini qo'shiq ohangli eshik jiringlagichi bilan o'rnatolmasligimni aytdi. Yuzlab xabarlarni o'qib, buni amalga oshirish mumkin emasligini aytdi. Simplisafe buni amalga oshirish mumkin emasligini aytdi, lekin baribir to'plamni etkazib berdi. Ulagichlar to'plami bar uchun mo'ljallangan
IPad -ga qo'shiq yozish: 11 qadam (rasmlar bilan)
IPad -ga qo'shiq yozish: Yaqinda bir do'stim qanday qilib qo'shiqlarini faqat gitara va iPad bilan yozib olishini so'radi. Men undan mikrofon va yozish interfeysi kabi boshqa ovoz yozish uskunalari bormi, deb so'radim. Afsuski, javob yo'q edi va u emas