Kazalo:

Generator tonov tkanine mikrokontrolerja v kodi C: 8 korakov (s slikami)
Generator tonov tkanine mikrokontrolerja v kodi C: 8 korakov (s slikami)

Video: Generator tonov tkanine mikrokontrolerja v kodi C: 8 korakov (s slikami)

Video: Generator tonov tkanine mikrokontrolerja v kodi C: 8 korakov (s slikami)
Video: Исследование JavaScript и API веб-аудио Сэма Грина и Хью Забриски 2024, Julij
Anonim
Generator tonov tkanine mikrokontrolerja v C-kodi
Generator tonov tkanine mikrokontrolerja v C-kodi

Konec oktobra lani je uporabnik instructables carmitsu poslal sporočilo, potem ko je videl moj sintetizator za kosilo. Iz njegovega sporočila: Glasbo poučujem v osnovni šoli. Predvajamo veliko snemalne glasbe. otroci igrajo na male flavte …… Imam več otrok s posebnimi potrebami, ki lahko uporabljajo te črne plakatne plošče s krogi, na katerih je ime zapiska. Ti učenci pritisnejo na kroge z imeni not, medtem ko preostali učenci igrajo pesem ….. Večina otrok s posebnimi potrebami to lahko počne precej dobro in v času z glasbo. Prizadevam si zgraditi zelo preprost generator zvoka, da bodo ti otroci igrali enako glasbo kot tiste, ki jih učenci igrajo na svojih snemalnikih. Bil bi le nekaj igrišč. Mislil sem, da bi lahko na dno okroglih krogov pritrdil nekakšen majhen gumb, tako da bi pri pritisku nanje zvok prišel iz majhnega zvočnika, dovolj glasen, da ga lahko slišijo. Kako sem se lahko upiral, če imam mamo, ki je učiteljica in ki ima rad šolo? Resnici na ljubo nisem mogel. To je precej kronika projekta in navodila, kako zgraditi svojega.

1. korak: Začetek ali zakaj se nisem mogel držati analognega

Začetek ali zakaj se nisem mogel držati analognega
Začetek ali zakaj se nisem mogel držati analognega

Dobre stvari se začnejo na naslednji strani. Če želite vedeti, kako sem končal z deli, ki sem jih naredil, preberite dalje. Pravi časomer: Ko sem nekaj pomislil na projekt, sem takoj pomislil na generator piezo tonov iz moje knjige op-amp Am Forest III. Zdi se mi kot dobra pot, gre le za piezo, 741 IC in nekaj pasivnih komponent. Nič hudega, kajne? No, ima 2 težavi, 1) ko pritisnete stikalo, je mogoče spremeniti glasnost 2) je skoraj nemogoče nastaviti. Prvega bi verjetno lahko premagali z neko tehnologijo debounce, čeprav nisem vedel, kako to storiti, ne da bi dodal še en števec. Lahko je tudi problem pri uporabi pieza. Drugo vprašanje je postalo nerodno, ko ste začeli poskušati doseči določeno višino. Kaj pa 555? Podatkovni list prikazuje funkcijo časovnega zamika, ki temelji na uporih in kondenzatorjih. Kar je super, dokler ne začnete vnašati dejanskih vrednosti delov v resničnem svetu, takrat se vam bo zdelo, da bo udarjanje na 440 Hz nekoliko oteženo. Za nastavitev lahko uporabite trim lonce, vendar se sčasoma ponavadi premaknejo. Nenehno uglaševanje instrumenta, sestavljeno ob hitrem povečanju stroškov in količine delov, in moja žena, ki je spreminjala glasnost, ko je pritisnila gumb, je za ta projekt ubila 555. Op-amp: Ni problema, ljudje so izdelovali sintetizatorje z op-amps že pred mojim rojstvom. Kako težko bi bilo narediti resnično preprosto, z nekaj deli in posebnimi opombami? Težje, kot sem mislil. Večina modelov je za ta projekt zelo zapletenih. Oblikovalci sintetizatorjev iščejo popolno valovno obliko/ton. To je neposredno v nasprotju s projektom, ki naj bi bil dovolj poceni za proračun šol ali učiteljev. Sestavljanje tipkovnice je dovolj preprosto, je le kup uporov in moči ali kup diod in moči. To je preostanek zasnove vezja in stroški tiskanih vezij po meri, ki nekomu na začetni ravni elektronike začnejo uhajati iz rok. Ponovna opredelitev projekta: Torej je bil projekt redefiniran, še preden sem sploh začel. Potreboval sem nekaj, s čimer bi lahko s pritiskom na gumb pravočasno preklopil zatič zvočnika. Ni mi bilo treba načrtovati in kupiti tiskanega vezja. Za to je bilo treba uporabiti čim manj komponent in ga sestaviti kot komplet za začetnike. Ves čas mi je gledal v obraz. Duh !! Mikrokrmilnik! Mikrokrmilnik: Ko sem kupil komplet Arduino Modern Devices Bare Bones in Evil Mad Scientist Simple Target Board ter jim pustil sedeti na mizi več mesecev, ko jih nisem uporabljal, sem imel popoln uvodni projekt. Začel sem iskati čas, ki je potreben za sestavo obojega, krivuljo učenja za kodo, stroške, potrebne dodatne dele in narediti, da naredi, kar hočem, in se uvrstil na ciljno ploščo. Cena je bila precej izenačena, 15 USD plus 20 USD FTDI kabel za Arduino, 12 USD plus 22 USD programer USBtinyISP. Že z majhne fakultete, ki sem jo zdržal, sem vedel, da je C ++ in sem mislil, da C za mikrokrmilnike ne bi bil tako slab, medtem ko razen utripanja luči, da bi se prepričal, da sem komplet pravilno sestavil, nisem imel izkušenj z Arduinom. Oboje je mogoče namestiti. To je bilo precej povečanje, zato sem se odločil za manj delov obeh, ciljno ploščo.

2. korak: Kaj potrebujete Rev 1

Kaj potrebujete Rev 1
Kaj potrebujete Rev 1

Stroški delovUSBtinyISP AVR Programmer Kit (USB SpokePOV Dongle) v2.0 22,00 $ https://www.adafruit.com/index.php? Main_page = product_info & cPath = 16 & products_id = 46 Mini kompleti za razvijalce zlobnega znanstvenika ATmegaXX8 Mini kompleti za razvijalce 12 USD, 6-pinski DIP, 6-polni 5-pk 2,75 $ https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohmski mini) 2,79 $ https://www.radioshack.com/product/index.jsp? ProductId = 2062406SPST Običajno odprta trenutna stikala (uporabljali smo 5) 3,49 USD (4 paket) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "Držalo za baterijo 1,79 USD https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Drsno stikalo Submini (neobvezno za stikalo za vklop) 2,69 USD (2 paketa) https://www.radioshack.com/product/index.jsp?productId=2062490LED in upor (neobvezno, če želite lučko za vklop) $ mora biti brezplačen če ležijo naokoli bi moral ležati tudi Wire $ Srebrna spajka (če se to dogaja v bližini otrok, najbrž ne smete uporabljati svinca, so starši pri teh stvareh precej čudni;)) Alkohol (da ponovno move flux) Če želite prihraniti denar na nekaterih mestih, vam ni treba dobiti delov od RadioShacka. To sem storil, ker sta blizu in predvidljiva.

Korak 3: Montaža Rev 1

Montaža Rev 1
Montaža Rev 1
Montaža Rev 1
Montaža Rev 1

Sestavite svoje dele, kot je prikazano. Ko končate, se prepričajte, da uporabljate alkohol in čopič, da se znebite kakršnega koli toka iz spajkanja. Spodaj je shema za tiste, ki imajo raje. D1 in R1 sta lahko karkoli želite, to je samo luč za moč. C1 je samo zato, da naredi moč nekoliko bolj konsistentno. Uporabil sem 10uF. Ta shema je enaka za poznejše različice, samo zamenjajte gumbe za stikala iz tkanine. v zadnji reviziji sem dodal stikala za PC4 in PC5 ali zatiča 27 in 28.

4. korak: Kaj potrebujete Rev 2

Kaj potrebujete Rev 2
Kaj potrebujete Rev 2

Torej v bistvu gumbe Radio Shack zamenjate za ročno izdelane tkanine. Potrebujete: več barv tkanine ali eno barvo, če želite, da je vsaka nota iste barve. Oddelek za prešite odeje v vaši najbližji trgovini s tkaninami je najboljše mesto za to poceni. Prešite odeje stanejo 1,50 USD in iz enega lahko dobite tono stikal. Prevodna tkanina, predlagam, da tkanina Flectron iz LessEMF stane 20 USD za kos 12 "x54" Eyelets za pritrditev žice na tkanino. Lahko jih kupite v večini trgovin s tkaninami poceni. JoAnn ima orodje in 25 za 2 USD Za to boste potrebovali kladivo. Žica, jaz sem uporabil 22AWG, predlagam manjše, če ga imate. Spajanje, da se obarvana in prevodna tkanina zlepi. Vprašajte v trgovini in verjetno jo lahko kupite pri dvorišču. To bi verjetno dobro delovalo, čeprav predlagam, da vprašate nekoga, ki je udaril, sprva sem uporabil zelo ohlapne stvari, nato pa prešel na nekaj bolj napetega. Predlagam, da poskusite nekaj različnih, dokler ne ugotovite, kaj najbolje deluje. Toplotno skrčljive cevi, zaradi česar je bilo vse skupaj veliko bolj obvladljivo. toplotno skrčljive žice skupaj, ko gresta drug mimo drugega, in bodo ostale veliko bolje.

5. korak: Montaža Rev 2

Montaža Rev 2
Montaža Rev 2
Montaža Rev 2
Montaža Rev 2
Montaža Rev 2
Montaža Rev 2

Večbarvno tkanino položite drug na drugega in izrežite kvadrat, ni nujno, da je popoln. Tkanino zlikajte, da odstranite gube, jih znova položite drug na drugega in se prepričajte, da se vsi robovi ujemajo. Odrežite vse robove, ki niso. Odrežite zgornji in spodnji krog, pri čemer pustite levo in desno stran naravnost. Stikalo boste obrnili po šivanju, zato zaobljenih strani ne naredite preveč okrogle in pustite dovolj višine na ravnih straneh, da stikalo enostavno potisnete skozi, ko končate. Zaokrožite ravno stran prvega in zadnjega stikala. Pojdite k svojemu šivalnemu stroju in sestavite dva kroga skupaj, tako da bosta dobra stran obrnjeni drug proti drugemu, in na ravne dele zašite šiv. sešite, izrežite kvadratke iz prevodne tkanine in eno stran združite. Odrežite žico na dolžino in odstranite en konec. spajkajte žico okoli enega od očescev. (spajka se verjetno ne bo prilepila na očesce) Na enem vogalu v tkanino izrežite majhno režo in zabodite očesce, da pritrdite tkanino in žico. odstranite podlogo iz varovalke in povežite prevodno tkanino s hrbtno stranjo barvne tkanine. Ponovite za vsa stikala. Če želite stvari olajšati, lahko žice segrejete skupaj, kadar ena žica preide skozi žico za naslednje stikalo. Vzemite ali naredite kos tkanine po dolžini sklopa stikal in izrežite trak prevodne tkanine po dolžini. Za razliko od barvnih stikal je to en dolg kos. To se bo dotaknilo gumbov za vzpostavitev povezave. Odrežite majhno režo in nanjo z očescem pritrdite žico, kot so barvni stikalni vrhovi. Varovalko pritrdite na zadnjo stran spodnjega materiala. Zgornji in spodnji del skupaj s prevodno tkanino zašijete navzven, z uporabo dvoriščne palice obrnite komplet po tem, ko je prišit. krog, nato pa samo odstranite paličico in naredite rez. Izrežite jih v obliko in jih vstavite v stikala. To vodi prevodno tkanino narazen. Morda bo lažje vstaviti letvico, medtem ko obrnete stikala namesto po. Stvari, ki sem jih uporabljal, so se med vstavljanjem precej raztrgale, zato sem moral dobiti različne udarce. Dolgi spodnji trak bo brušen.

6. korak: Kaj potrebujete Rev 3

Kaj potrebujete Rev 3
Kaj potrebujete Rev 3

V Rev 3 sem stikala naredil neodvisno od ožičenja. To je prihranilo ogromno časa. Všeč mi je tudi videz končnega rezultata. Torej, tukaj so novi deli, ki jih potrebujete: Posnetki, pravkar sem jih dobil od JoAnn's. Prišli so z orodjem za namestitev, ki ni slabo za 7 USD. Namesto tega bi predlagal eno od orodij za klešče, saj sem moral razstaviti svoje orodje, da sem namestil zatiče na sredini. Šivanje bi bilo dobra alternativa, čeprav traja dlje časa, da se držijo. Prevodna nit Spark Fun vsebuje stvari, ki jih lahko vnesete v šivalni stroj. Moral sem iti zelo počasi v svojem stroju, sicer bi se nit prekinil. Vaša kilometrina se lahko razlikuje

7. korak: Montaža Rev 3

Montaža Rev 3
Montaža Rev 3
Montaža Rev 3
Montaža Rev 3
Montaža Rev 3
Montaža Rev 3
Montaža Rev 3
Montaža Rev 3

Ta revizija je bila po času do izdelave veliko boljša od prejšnje. Poleg tega so mi odstranljiva stikala večkrat rešila razum. Začnite tako, da naredite osnovo. To je samo ena prešita četrtina, prepognjena na pol. Na vrh položite plast vata in zašite, pri čemer pustite luknjo, da jo obrnete. Potisnite stvar skozi luknjo in v bistvu imate stvar za blazino. Prešite ga, tako da je bilo lažje delati. Uporabite navaden navoj in se pomahajte. Na tem sem naredil diamante, morda pa bom naslednjič zadaj dal zmaja ali kaj kul. Zdaj pa na stikala. Ta oblika mi je všeč, ker lahko v bistvu to naredite vnaprej in uporabite kar želite. začnite z ostankom kosa kartona, papirja ali tkanine in iz njega izrežite obliko hruške. Uporabite to kot vodilo za rezanje vrha in dna vsakega stikala. Za vsako dno sem izrezal eno barvo, za zgornje pa drugo barvo, vendar ste lahko ustvarjalni in naredite, kar želite. Odrežite vodnik do oblike lizike, ki se zlahka prilega stikalu. Podaljšajte "palico", da se lahko ovije čez rob "hruške". Izrežite obliko iz spajalne in prevodne tkanine in varujte eno stran prevodne tkanine. Odstranite podlogo iz spajalnega materiala in jo privijte do vrha tkanine, ki bo na dnu, in dna tkanine, ki bo na vrhu. Dodatni košček ovijemo po vrhu. Pojdite k šivalnemu stroju in med zgornjo in spodnjo tkanino vstavite letve z luknjami. Šivajte zunaj prevodne tkanine in preskočite "palico" del stikala. Ugotovil sem, da je mogoče zgornjo prevodno tkanino prišiti na dno in ustvariti kratek. Bolje je, da ne šivate skozi prevodno tkanino. Pripnite posnetke in stikalo je končano. Lažje sem uporabil moški snap za vse spodnje/GND povezave in ženski snap za vse vrhove. Zaradi tega so vsa stikala zamenljiva. Odvzela sem svoje ostanke, zlila velike kose fuzije na velike kose prevodne tkanine in jih uporabila za izrezovanje manjših pravokotnikov, ki sem jih uporabila kot blazinice. Približno položite stikala in vstavite blazinice na podlago z dovolj prostora, da jim prišijete vrvico in se zaskočite. Noga šivalnega stroja, ki sem jo uporabil, ni bila prijazna do tega, da bi bila zelo blizu snapa, zato imejte to v mislih in si dajte nekaj prostora. Ker sem dobil prevodno nit, ki bi lahko šla v moj šivalni stroj, sem samo sešil vrvico od blazinice do blazinice in nazaj. Moral sem iti počasi, sicer bi se nit prekinil, vendar je bilo tono hitreje kot ročno šivanje. Tudi s prevodnim navojem na klekljanju in iglo sem dobil res dobro trdno povezavo. Stvari se kot nore razbijejo, a malo obrtniškega lepila ali Elmers to razčisti. Poskusite držati črte daleč drug od drugega in ne bi smelo biti težav. Končna montaža: Pripnite vsa stikala, priključite ploščo, naložite kodo in končali ste. Uporabil sem žico, da sem prišel od plošče do blazinice, nato pa sem ročno samo prišil žico na podlago. Za naslednjo različico bom ploščo namestil v plastično škatlo s sponkami, da jo pritrdim na podlago, tako da je prazni prsti ne raztrgajo.

8. korak: Koda

Koda
Koda

Če še nikoli niste programirali čipa, je to nekoliko zastrašujoča naloga. Ne pomaga, če so orodja luskasta in večinoma morate isto operacijo izvesti večkrat. Dva najboljša vira, ki sem jih našel za razumevanje dogajanja, sta stran za USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ in hitri tečaj programiranja igrače za hrup, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html S tem bi morali začeti.

Veliko ljudi, kot je Arduino za to kodiranje, in ni nič narobe, če ga uporabljate, razen čutim, da običajno preprostemu programu doda veliko napihnjenosti. Prav tako sem poznal C in ne poznam Arduina. Mogoče nekega dne, če bo čas.:) Koda: {{{#include // Z vtičnikom vklopite SPK /// 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); // Nastavite SPK za izhod PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Gumb za nastavitev visoko PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Nastavi časovnik, medtem ko (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); // Obrni SPK Pin TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // Obrni SPK Pin TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // Obrni SPK Pin TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // Obrni SPK Pin TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // Obrni SPK Pin TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // Obrni SPK Pin TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // Obrni SPK Pin TCNT2 = 0; }}}}}}} Od kod prihajajo igrišča? Potrebno je bilo malo matematike. Ura časovnika na atmegi 168 deluje na 1MHz. Za zvok je to prehitro, zato moramo uporabiti predkaler /8. Ker moramo za 1 cikel dvigniti izhodni zatič visoko, nato nizko, moramo odgovor razdeliti na 2, da dobimo pravo višino. Formula izgleda takole, Pitch za vnos kode = (1000000/8)/(Ciljna frekvenca*2) Za A (440) bi bilo to za naše namene 125000/880 = 142.045 ali 142, saj mora biti vrednost celo število. Ciljne frekvence zapiskov najdete povsod na spletu in so na splošno enake. Še vedno želim dodati izjavo o primeru, namesto da bi uporabil kopico If, in uporabiti PWM za boljši nadzor glasnosti in višine zvočnika, vendar zaenkrat to deluje.

Priporočena: