Mundarija:

Mikrokontroller mato ohang generatori C-kodda: 8 qadam (rasmlar bilan)
Mikrokontroller mato ohang generatori C-kodda: 8 qadam (rasmlar bilan)

Video: Mikrokontroller mato ohang generatori C-kodda: 8 qadam (rasmlar bilan)

Video: Mikrokontroller mato ohang generatori C-kodda: 8 qadam (rasmlar bilan)
Video: Одна история интереснее другой ► 4 Прохождение Dying Light 2: Stay Human 2024, Iyul
Anonim
Mikrokontroller mato ohang generatori C-kodda
Mikrokontroller mato ohang generatori C-kodda

O'tgan yilning oktyabr oyi oxirida, ko'rsatmali foydalanuvchilar carmitsu mening tushlik qutisi sinxronizatsiyasini ko'rganimdan so'ng menga xabar yuborishdi. Uning xabaridan: Men boshlang'ich maktabda musiqadan dars beraman. Biz juda ko'p magnitafon musiqasini ijro etamiz. ya’ni bolalar kichkina nay chalishadi …… Menda bir nechta maxsus ehtiyojli bolalar bor, ular bu qora plakatlar taxtasida yozuvning nomi yozilgan. Bu talabalar bir vaqtning o'zida notalar nomlari yozilgan doiralarga kirishadi, qolgan o'quvchilar esa qo'shiq kuylaydilar ….. Maxsus ehtiyojli bolalarning ko'pchiligi buni juda yaxshi va o'z vaqtida musiqa bilan bajara oladilar. Men qidirmoqchi bo'lgan narsa - bu bolalar ovoz yozish moslamasida talabalar o'ynagan maydonda o'ynashi uchun juda oddiy ovoz generatorini yaratish. Men faqat bir nechta maydon bo'lardim. Men dumaloq doiralarining pastki qismiga qandaydir kichik tugmachani biriktirishim mumkin deb o'yladim, shunda ular bosilganda ovoz baland ovozli karnaydan eshitiladi, shunda ular baland ovozda eshitiladi. O'qituvchi va maktabni yoqtirgan onam bo'lsa, men qanday qarshilik qila olardim? Rostini aytsam, qila olmadim. Bu deyarli loyihaning yilnomasi va o'z qo'llaringiz bilan qurish bo'yicha ko'rsatmalar.

1 -qadam: Boshlanishi yoki nima uchun men analogga yopisha olmadim

Boshlanishi yoki nima uchun men analogga yopisha olmadim
Boshlanishi yoki nima uchun men analogga yopisha olmadim

Yaxshi narsalar keyingi sahifada boshlanadi. Agar men bajargan qismlarni qanday ishlatganimni bilmoqchi bo'lsangiz, o'qing. Haqiqiy taymer: Loyihani berganimdan so'ng, men darhol "Mimes Forest Mims III" op-amperli kitobimdagi piezo tovush generatori haqida o'yladim. Ko'rinishidan, bu yaxshi yo'l, bu faqat piezo, 741 IC va bir nechta passiv komponentlar. Katta gap yo'q, to'g'rimi? Xo'sh, unda 2 ta muammo bor, 1) tugmachani bosganingizda, ohangni o'zgartirish mumkin 2) sozlash qiyin. Birinchisini, ehtimol, ba'zi bir o'chirish texnologiyasi bilan engish mumkin edi, lekin men boshqa hisoblagich qo'shmasdan buni qanday qilishni bilmasdim. Bu piezodan foydalanish bilan ham bog'liq bo'lishi mumkin. Ikkinchi masala, ma'lum bir maydonga chiqishga urinishni boshlaganingizda, qiyin bo'lib qoldi. 555 haqida nima deyish mumkin? Ma'lumotlar jadvalida rezistorlar va kondansatkichlarga asoslangan vaqtni aniqlash funksiyasi ko'rsatilgan. Haqiqiy dunyo qismlarining haqiqiy qiymatlarini yozishni boshlamaguningizcha bu juda yaxshi, shunda siz 440 gigagertsli chastotani bosish biroz qiyinlasha boshlaydi. Sozlash uchun siz kostryulkalardan foydalanishingiz mumkin, lekin vaqt o'tishi bilan ular harakatlana boshlaydi. Dvigatelni doimiy ravishda sozlash, uning qismlari narxi va sonining tez o'sishi bilan bir qatorda, rafiqam ham tugmani bosganida maydonni o'zgartiradi, bu loyiha uchun 555 ni o'ldiradi. op-amps men tug'ilganimdan beri. Bir nechta qismlar va aniq eslatmalar bilan chindan ham oddiy ishni bajarish qanchalik qiyin bo'lishi mumkin? Men o'ylagandan ko'ra qiyinroq. Dizaynlarning aksariyati ushbu loyiha uchun juda murakkab. Synth dizaynerlari mukammal to'lqin shakli/ohangiga ega. Bu maktab yoki o'qituvchilar byudjeti uchun etarlicha arzon bo'lishi kerak bo'lgan loyihaga bevosita zid. Klaviatura yaratish juda oson, bu faqat bir nechta qarshilik va quvvat yoki bir nechta diod va quvvat. Bu elektron dizaynning qolgan qismi va shaxsiy kompyuterlar narxi elektronika darajasida kimdir uchun qo'ldan chiqa boshlaydi. Loyihani qayta ta'riflash: Shunday qilib, loyiha men boshlamasdan oldin qayta aniqlandi. Menga tugmachani bosib, karnay pinini o'zgartiradigan narsa kerak edi. Men PCB dizaynini sotib olishni xohlamadim. Buning uchun iloji boricha kamroq komponentlardan foydalanish kerak edi va ular yangi boshlanuvchilar uchun to'plam sifatida yig'ilishi kerak edi. Bu mening yuzimga tikilib turardi. Duh !! Mikrokontroller! Mikrokontroller: Shunday qilib, men Arduino -ning zamonaviy asboblari va yalang'och suyaklar to'plamini sotib olib, ularni bir necha oy davomida stolimda ishlatmay qo'yganimdan so'ng, menda mukammal kirish loyihasi bor edi. Men ikkalasini birlashtirish uchun zarur bo'lgan vaqtni, kodni o'rganish egri chizig'ini, xarajatlarni, kerakli qo'shimcha qismlarni va men xohlagan narsani bajarishni va maqsadli taxtaga joylashishni ko'rib chiqa boshladim. Arduino uchun 15 dollar va 20 dollarlik FTDI kabeli, 12 dollar va 22 dollarlik USBtinyISP dasturchisi juda teng edi. Men C ++ ni kichik kollejdan bilardim va men mikrokontrolderlar uchun C unchalik yomon bo'lmaydi deb o'yladim, shu bilan birga, to'plamimni to'g'ri yig'ish uchun chiroq yonib tursa, menda Arduino tajribasi yo'q edi. Ikkalasini ham o'rnatish mumkin. Bu juda katta yugurish edi, shuning uchun men ikkalasining kamroq qismiga, maqsadli taxtaga qaror qildim.

2 -qadam: Sizga nima kerak Rev 1

Sizga nima kerak Rev 1
Sizga nima kerak Rev 1

UsbBtinyISP AVR dasturchi to'plami (USB SpokePOV Dongle) v2.0 $ 22.00 5-pk $ 2.75 https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohmli Mini) $ 2.79 5) $ 3,49 (4pack) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "batareya ushlagichi $ 1,79https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Submini Slide Switch (quvvat kaliti uchun ixtiyoriy) $ 2.69 (2 to'plamli) https://www.radioshack.com/product/index.jsp?productId=2062490LED va rezistor (ixtiyoriy, agar siz chiroqni xohlasangiz) $ bepul bo'lishi kerak. Agar ular yolg'on gapirsalar Wire $ ham atrofida bo'lishi kerak Kumush lehim (agar bu bolalar yaqinida ketadigan bo'lsa, siz qo'rg'oshin ishlatmasligingiz kerak, ota -onalar bunday narsaga juda g'alati tuyuladi;)) Spirtli ichimliklar (qayta harakat oqimi) Agar ba'zi joylar pulni tejashini xohlasangiz, RadioShack -dan ehtiyot qismlarni olishingiz shart emas. Men qildim, chunki ular yaqin va bashoratli.

3 -qadam: O'rnatish Rev 1

O'rnatish Rev 1
O'rnatish Rev 1
O'rnatish Rev 1
O'rnatish Rev 1

Ko'rsatilganidek, qismlaringizni bir joyga qo'ying. Lehimlashdan qutulish uchun spirtli ichimliklar va cho'tkadan foydalanganingizga ishonch hosil qiling. Sxematikani afzal ko'rganlar uchun quyida keltirilgan. D1 va R1 siz xohlagan narsaga aylanishi mumkin, bu faqat quvvat nuri. C1 - bu kuchni barqarorlashtirishga yordam berish. Men 10 uF ishlatardim. Ushbu sxema keyingi versiyalar uchun ham xuddi shunday, mato tugmachalari uchun tugmachalarni almashtiring. oxirgi versiyada men PC4 va PC5 kalitlarini yoki 27 va 28 -gachasi pinlarni qo'shdim.

4 -qadam: Sizga nima kerak Rev 2

Sizga nima kerak Rev 2
Sizga nima kerak Rev 2

Shunday qilib, siz "Radio Shack" tugmachalarini qo'lda ishlangan matolarga almashtiryapsiz. Sizga kerak: Matoning bir nechta ranglari yoki bitta rangni xohlasangiz, bitta rang. Eng yaqin mato do'konining kviling bo'limi - bu arzon narxda sotib olish uchun eng yaxshi joy. To'qimachilik kvartallari $ 1.50 va siz bir tonnadan kalitlarni olishingiz mumkin. Supero'tkazuvchi matodan men LessEMF -dan Flectron matosini taklif qilaman, bu matoga simni ulash uchun 12 dyuymli "x54" o'lchamli Eyelets uchun 20 dollar. Siz ularni mato do'konlarida arzon narxda sotib olishingiz mumkin. JoAnnning asbobi bor va 25 $ 2 uchun sizga bolg'a kerak bo'ladi. Tel, men 22AWG ishlatardim, agar sizda kichikroq bo'lsa, men taklif qilaman. Rangli va o'tkazuvchan matoni bir -biriga yopishtirish uchun. Do'kondan so'rang, ehtimol siz uni hovlidan sotib olishingiz mumkin. Bu, ehtimol, yaxshi ishlaydi, lekin men sizga kimnidir Battingdan so'rashingizni maslahat beraman, lekin men dastlab juda bo'sh narsalarni ishlatardim, keyin qattiqroq to'qilgan narsaga o'tdim. Men sizga eng mos keladigan narsani topmaguningizcha bir nechta boshqasini sinab ko'rishni taklif qilaman. simlar bir -biridan o'tib ketganda, ular bir -biridan yaxshiroq o'tib ketadi.

5 -qadam: O'rnatish Rev 2

O'rnatish Rev 2
O'rnatish Rev 2
O'rnatish Rev 2
O'rnatish Rev 2
O'rnatish Rev 2
O'rnatish Rev 2

Ko'p rangli matoni bir-birining ustiga qo'ying va to'rtburchaklar kesib oling, u mukammal bo'lishi shart emas. Matoni dazmollab, har qanday burmalarni chiqarib oling, ularni yana bir -birining ustiga qo'ying va qirralarning bir -biriga mos kelishiga ishonch hosil qiling. Chap va o'ng tomonlarini to'g'ri qoldirib, yuqoridan va pastdan yumaloq qilib kesib oling. Siz tikuvdan keyin kalitni teskari aylantirmoqchisiz, shuning uchun yumaloq qirralarini juda yumaloq qilmang va tugallangandan so'ng, tugmachani osongina bosib o'tish uchun tekis tomonlarga etarlicha balandlik qoldiring. Birinchi va oxirgi kalitning tekis tomonini aylantiring. Tikuv mashinangizga o'ting va ikkita dumaloqni bir -biriga qo'ying, shunda yaxshi tomon bir -biriga qaraydi va tekis qismlarga tikuv tikiladi. tikilgan, Supero'tkazuvchi matodan to'rtburchaklar kesib, bir tomonini birlashtiring. Telni uzunligiga kesib oling va bir chetini echib oling. paychalarining birining atrofidagi simni lehimlang. (Lehim ko'zga yopishib qolmasligi mumkin) Matoning bir burchagidan kichik bo'lakni kesib oling va matoni va simni mahkamlash uchun teshikni bolg'a bilan torting. termoyadroviy qoplamani olib tashlang va Supero'tkazuvchi matoni rangli matoning orqa qismiga ulang. Barcha kalitlar uchun takrorlang. Ishni engillashtirish uchun, siz bitta sim keyingi kalit uchun simdan o'tib ketganda, qisish trubkasini bir -biriga qizdirib qo'yishingiz mumkin. O'tish moslamasining uzunligidan mato bo'lagini oling va uning uzunligini o'tkazuvchi matodan kesib oling. Rangli kalitlardan farqli o'laroq, bu bitta uzun bo'lak. Bu ulanish uchun tugmalar tegadigan narsa bo'ladi. Kichkina yoriqni kesib oling va unga rangli kalitning ustki qismiga o'xshab, teshik bilan sim ulang. Pastki matoning orqa qismiga birlashtiring. Ustki va pastki qismini o'tkazgichli matoga qaragan holda tikib qo'ying, dastani tikilganidan keyin teskari aylantiring. Vintdagi bir nechta mayda teshiklarni kesib oling. aylana, keyin tayoqchani olib tashlang va kesib oling. Ularni shaklga keltiring va kalitlarga joylashtiring. Supero'tkazuvchilar matoni bir -biridan ajratib turadigan narsa shundaki, kalitlarni teskari burish paytida, vintni kiritish osonroq bo'lishi mumkin. Men ishlatgan narsalar juda yomon yirtib tashlandi va men har xil tayoqchalarni olishim kerak edi. Pastki uzun chiziq silliqlanadi.

6 -qadam: Sizga nima kerak Rev 3

Sizga nima kerak Rev 3
Sizga nima kerak Rev 3

Rev 3 da men kalitlarni simlardan mustaqil qildim. Bu ko'p vaqtni tejaydi. Menga tayyor natijaning ko'rinishi ko'proq yoqadi, shuning uchun sizga kerak bo'lgan yangi qismlar: Snaps, ularni JoAnn -dan oldim. Ular 7 dollarga yomon bo'lmagan o'rnatish vositasi bilan kelishdi, men uning o'rniga qisqich asboblaridan birini taklif qilardim, chunki men asbobni o'rtasiga o'rnatish uchun asbobimni ajratishim kerak edi. Tikuv mashinalari yaxshi alternativ bo'lardi, lekin ularni yopishtirish uchun ko'proq vaqt kerak bo'ladi. Supero'tkazuvchi ip, Spark Fun sizning tikuv mashinangizga kirishi mumkin bo'lgan narsalarga ega. Men mashinada juda sekin harakat qilishim kerak edi, aks holda ip uzilib ketadi. Sizning yurishingiz har xil bo'lishi mumkin

7 -qadam: Assambleyaning Rev 3

O'rnatish Rev 3
O'rnatish Rev 3
O'rnatish Rev 3
O'rnatish Rev 3
O'rnatish Rev 3
O'rnatish Rev 3
O'rnatish Rev 3
O'rnatish Rev 3

Ushbu versiya qurilgunga qadar o'tgan vaqtga qaraganda ancha yaxshi edi. Bundan tashqari, olinadigan kalitlarga ega bo'lish mening aqlimni bir necha bor saqlab qoldi. Baza yasashdan boshlang. Bu kvilingning chorak qismi yarmiga katlanmış. Yuqoridan tepa qatlamini qo'ying va tikib qo'ying, uni teskari aylantiradigan teshik qoldiring. Bu narsani teshikdan o'tkazing va sizda asosan yostiqsimon narsa bor. Men uni tikdim, shuning uchun u bilan ishlash osonroq edi. Oddiy ipdan foydalaning va yong'oqqa o'ting. Men bu borada olmos qildim, lekin, ehtimol, keyingi safar men ajdarni orqasiga yoki boshqa ajoyib narsaga qo'yaman. Endi kalitlarga. Menga bu dizayn yoqadi, chunki siz ulardan bir tonnasini oldindan tayyorlab, xohlaganingizdan foydalanishingiz mumkin. karton, qog'oz yoki matoning qoldiqlarini ishlatishdan boshlang va undan nok shaklini kesib oling. Buni har bir kalit uchun yuqoridan va pastdan kesish uchun qo'llanma sifatida foydalaning. Men har bir taglik uchun bitta rangni, tepalari uchun boshqa rangni kesib tashladim, lekin siz ijodkor bo'lishingiz va xohlagan narsani qilishingiz mumkin. Qo'llanmani kalitning ichiga osongina joylashadigan lolipop shakliga kesib oling. "Tayoqni" uzaytiring, shunda u "nok" ning chetiga o'raladi. Birlashtiruvchi va o'tkazuvchi matodan shaklini kesib oling va o'tkazgichning bir tomonini birlashtiring. Birlashtiruvchi materialdan tayanchni olib tashlang va uni matoning pastki qismiga va matoning yuqori qismiga birlashtiring. Ortiqcha qismini tepaga o'rab oling. Tikuv mashinangizga o'ting va matoning yuqori va pastki qismlari o'rtasida teshik qiling. Supero'tkazuvchi matodan tashqarida tikib, kalitning "tayoq" qismini o'tkazib yuboring. Qisqa qilib, yuqori o'tkazgichli matoni pastki qismiga tikish mumkinligini aniqladim. Supero'tkazuvchi mato orqali tikmaslik yaxshiroqdir. Qoplamalarni ulang va almashtirish tugadi. Menga barcha pastki/GND ulanishlar uchun erkak dastani va barcha tepaliklar uchun urg'ochi ishlatish osonroq tuyuldi. Bu barcha kalitlarni bir -birining o'rnini bosishga imkon beradi. O'chirish: Dumaloqlarni kesishning asosiy xususiyati shundaki, sizda qo'shimcha bitlar ko'p. Men qoldiqlarni oldim, birlashtiruvchi bo'laklarni katta o'tkazgich matoga birlashtirdim va ulardan prokladka sifatida ishlatilgan kichikroq to'rtburchaklar kesib oldim. O'chirish tugmachalarini yotqizib qo'ying va tagliklarni taglikka ulang, shunda ular uchun chiziq tikib qo'yish mumkin. Men ishlatgan tikuv mashinasining oyog'i juda yaqin bo'lmagan, shuning uchun buni yodda saqlang va o'zingizga bo'sh joy bering. Tikuv mashinamga kira oladigan Supero'tkazuvchilar ipga ega bo'lganim uchun, men yostiqdan yostiqqa va orqaga chiziq tikdim. Men sekin yurishim kerak edi, aks holda ip uzilib ketardi, lekin qo'l tikishdan ko'ra bir tonna tezroq edi. Bundan tashqari, lenta va ignadagi o'tkazgichli ip bilan men juda yaxshi mustahkam aloqaga ega bo'ldim. Bu narsalar aqldan ozganga o'xshaydi, lekin ozgina yopishtiruvchi elim yoki Elmers uni tozalaydi. Chiziqlarni bir -biridan uzoqroq tutishga harakat qiling, shunda hech qanday muammo bo'lmasligi kerak. Yakuniy yig'ilish: Hamma kalitlarga ulang, taxtani ulang, kodni yuklang va ishingiz tugadi. Men taxtadan yostiqqa o'tish uchun sim ishlatardim, keyin simni tayanchga qo'lda tikdim. Keyingi versiya uchun men taxtani tayanchga mahkamlanadigan plastik qutiga o'rnataman, shunda bo'sh barmoqlar uni tortib olmaydilar.

8 -qadam: kod

Kod
Kod

Agar siz ilgari chipni hech qachon dasturlamagan bo'lsangiz, bu juda qiyin vazifadir. Bu asboblar chayqalib ketishiga yordam bermaydi va ko'pincha siz bir xil operatsiyani bir necha marta bajarishingiz kerak bo'ladi. Nimalar bo'layotganini tushunish uchun men topgan ikkita eng yaxshi manba bu USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ sahifasi va shovqinli o'yinchoqni dasturlashda xato kursi, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Ular sizni boshlashingiz kerak.

Ko'pchilik bu kodlash uchun Arduino -ni yaxshi ko'radi va uni ishlatishning hech qanday yomon joyi yo'q, lekin menimcha, bu oddiy dasturga juda ko'p shishiradi. Bundan tashqari, men C ni bilardim va Arduinoni bilmayman. Balki bir kun, agar vaqt bo'lsa.:) Kod: {{{#include // SPK ni yoqish uchun pin yordamida /// Typedefs ////////// typedef unsigned char u8; int main (void) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // PORTD = (1 << PD0) chiqishi uchun SPK ni o'rnating | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Yuqori tugmani o'rnatish PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Taymerni sozlash vaqtida (1) {btnState0 = ~ PINC & (1 << PC5); btnState1 = ~ PINC & (1 << PC4); btnState2 = ~ PIND & (1 << PD0); btnState3 = ~ PIND & (1 << PD1); btnState4 = ~ PIND & (1 << PD2); btnState5 = ~ PIND & (1 << PD3); btnState6 = ~ PIND & (1 << PD4); if (btnState0) {if (TCNT2> = 190) {PORTB ^= (1 << PD6); // SPK pinini aylantirish TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // SPK pinini aylantirish TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // SPK pinini aylantirish TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // SPK pinini aylantirish TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // SPK pinini aylantirish TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // SPK pinini aylantirish TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // SPK pinini aylantirish TCNT2 = 0; }}}}}}} Maydonlar qayerdan keladi? Bir oz matematika kerak edi. Atmega 168 -dagi taymer soati 1 MGts da ishlaydi. Bu audio uchun juda tez, shuning uchun biz oldindan hisoblagichni ishlatishimiz kerak /8. Chiqish pimini 1 tsikl qilish uchun yuqoriga va pastga burishimiz kerak bo'lgani uchun, to'g'ri maydonni topish uchun javobni 2 ga bo'lishimiz kerak. Formula shunday ko'rinadi, Pitch kodini qo'yish = (1000000/8)/(Maqsad chastotasi*2) A (440) uchun bu bizning maqsadlarimiz uchun 125000/880 = 142.045 yoki 142 bo'ladi, chunki qiymat butun son bo'lishi kerak.. Eslatmalarning maqsadli chastotalarini deyarli har qanday Internetda topish mumkin va umuman bir xil. Men hali ham Ifs to'plamini ishlatish o'rniga ish bayonnomasini qo'shmoqchiman va dinamikning ovozini va balandligini yaxshiroq nazorat qilish uchun PWM -dan foydalanmoqchiman, lekin hozircha bu ishlaydi.

Tavsiya: