V tem projektu bomo razvili generator tonov z uporabo Arduino Uno. Gumbi bodo povezani z UNO in vsak od njih ustvarja različno intenzivnost tona. Pogostnost tona, ki ga ustvarja UNO, je pri vseh internih enota enaka. Intenzivnost zvoka se spreminja z vsakim pritiskom. To je eden najlažjih načinov za izdelavo klavirja z Arduino Uno. Preverite tudi to klavirsko vezje.
Tone lahko povečate do 20. To omogoča najboljše nihanje tonov in veliko bolj gladke spremembe. Intenzivnost tona spremeni PWM (Pulse Width Modulation). Primer PWM je prikazan na spodnjem grafu.
V PWM je frekvenca signala ali časovno obdobje signala (Ton + Toff) vedno konstantna. Spremeni se samo razmerje med časom VKLOP in IZKLOP. Na primer, v drugem grafu na zgornji sliki je čas VKLOPA 80% in ČAS IZKLOPA 20% celotnega trajanja.
V tretjem grafu je čas IZKLOPA 50%, čas IZKLOPA pa 50% celotnega trajanja. Torej imamo v prvem primeru 80-odstotno stopnjo dajatve, v drugem pa 20-odstotno dajatev.
S to spremembo delovnega razmerja imamo spremembo v Vrms (vrednost napetosti koreninskega srednjega kvadrata), ko ta napetost odda zvočni signal, ob vsaki spremembi delovnega razmerja sproži drugačen hrup.
Programirali bomo UNO, da bo za vsak gumb omogočal signal PWM z različnim razmerjem obratovanja. Tako imamo pri roki generator tonov, ki z vsakim pritiskom na gumb ustvari drugačen ton.
Potrebne komponente
Strojna oprema: Arduino Uno, napajalnik (5v), kondenzator 1000 uF, kondenzator 100 nF, zvočni signal, gumbi (8 kosov).
Programska oprema: AURDINO nightly ali Atmel studio 6.2
Shema vezja in delovna razlaga
Vezje za generator tona je prikazano na spodnjem diagramu.
Za filtriranje hrupa iz napajalne napetosti so kondenzatorji nameščeni čez terminale, kot je prikazano na diagramu.
PWM Arduino Uno je mogoče doseči na katerem koli zatiču, ki je na plošči PCB simboliziran z znakom »~«. V UNO je šest kanalov PWM. Vendar ne moremo uporabiti zatičev PWM, ki so nameščeni na PINS 0-7, saj so PINS prednostni za vmesnike gumbov.
Obstaja razlog za izbiro PINS 0-7 kot vhoda, ker PINS 0-7 predstavlja PORTD mikrokrmilnika. V slednjem primeru lahko vzamemo celotno bajto PORTD-a.
Da bi dobili PWM z drugačnim razmerjem dajatev, bomo uporabili naslednji ukaz.
analogWrite (9, VREDNOST); |
Iz zgornjega pogoja lahko signal PWM neposredno dobimo na ustreznem zatiču. Prvi parameter v oklepajih je za izbiro številke pina PWM signala. Drugi parameter je za zapisovanje razmerja dajatev.
Vrednost PWM za Arduino Uno je mogoče spremeniti z 0 na 255. Z “0” kot najnižjo na “255” kot najvišjo. Z 255 kot razmerjem dajatev bomo pri PIN9 dobili 5V. Če je razmerje dajatev 125, bomo pri PIN9 dobili 2,5 V. Razmerje dajatev 0-250 bomo razdelili med 8 gumbov, povezanih na PORTD UNO. Tu izberem 25 korakov za vsak gumb, vendar je po vaši izbiri.
S tem bomo dobili signal PWM, katerega razmerje obratovanja se spreminja z vsakim gumbom. To je dano zvočniku, imamo generator tonov. Delovanje tega generatorja tonov, ki temelji na Arduinu, je razloženo po korakih v spodnji kodi C.