U ovom ćemo projektu razviti generator tonova koristeći Arduino Uno. Imat ćemo tipke povezane s UNO-om i svaka od njih generira različit intenzitet tona. Učestalost tona koji generira UNO jednaka je na svim internim uređajima. Intenzitet zvuka mijenja se svakim pritiskom. Ovo je jedan od najlakših načina za izradu klavira s Arduino Uno. Također provjerite ovaj klavirski krug.
Tonove možete povećati do 20. To daje najbolju varijaciju tona i puno glatke promjene. Intenzitet tona mijenja se PWM-om (modulacija širine impulsa). Primjer PWM-a prikazan je na donjem grafikonu.

U PWM-u, frekvencija signala ili vremensko razdoblje signala (Ton + Toff) uvijek je konstantna. Mijenja se samo omjer vremena UKLJUČIVANJA i ISKLJUČENJA. Na primjer, na drugom grafikonu na gornjoj slici, vrijeme UKLJUČIVANJA je 80%, a vrijeme ISKLJUČIVANJA 20% ukupnog trajanja.
Na trećem grafikonu, vrijeme UKLJUČIVANJA je 50%, a vrijeme ISKLJUČIVANJA 50% ukupnog trajanja. Dakle, u prvom slučaju imamo omjer carine 80%, a u drugom slučaju omjer carine 20%.
S ovom promjenom omjera radne snage imamo promjenu u Vrmsu (vrijednost napona u srednjem kvadratu), kada ovaj napon dade zujalicu, stvara drugačiju buku kad god dođe do promjene omjera radne snage.
Programirat ćemo UNO da pruža PWM signal različitog omjera radne snage za svaki od gumba. Tako nam je pri ruci generator tona koji generira drugačiji ton svakim pritiskom na tipku.
Komponente potrebne
Hardver: Arduino Uno, napajanje (5v), kondenzator 1000 uF, kondenzator 100 nF, zujalica, tipke (8 komada).
Softver: AURDINO nightly ili Atmel studio 6.2
Kružni dijagram i radno objašnjenje
Krug za generator tona prikazan je na donjem dijagramu.

Za filtriranje buke iz napona kondenzatori se postavljaju preko stezaljki kako je prikazano na dijagramu.
PWM Arduino Uno može se postići na bilo kojem od pinova simboliziranih kao „~“ na ploči PCB-a. U UNO postoji šest PWM kanala. Međutim, ne možemo koristiti PWM pinove uspostavljene preko PINS-a 0-7, jer su PINS-ovi poželjni za sučelje gumba.
Postoji razlog za odabir PINS 0-7 kao ulaza, jer PINS 0-7 predstavlja PORTD mikrokontrolera. Dakle, u potonjem slučaju možemo uzeti kompletan BYTE PORTD-a.
Sada ćemo dobiti drugačiji omjer radne snage PWM, a koristit ćemo sljedeću naredbu.
|
analogWrite (9, VRIJEDNOST); |
Iz gornjeg stanja možemo izravno dobiti PWM signal na odgovarajućem pinu. Prvi parametar u zagradama je za odabir broja pina PWM signala. Drugi parametar je za upisivanje omjera davanja.
Vrijednost PWM-a Arduino Uno može se promijeniti od 0 do 255. S "0" najniža na "255" najviša. Sa 255 kao omjer radne snage dobit ćemo 5V na PIN9. Ako je omjer radne snage naveden kao 125, dobit ćemo 2,5 V na PIN9. Podijelit ćemo omjer radne snage 0-250 između 8 gumba povezanih na PORTD UNO-a. Ovdje odabirem 25 koraka za svaki gumb, ali to je po vašem izboru.
Uz to ćemo dobiti PWM signal čiji se omjer radne snage mijenja sa svakim gumbom. To se daje zujalici, imamo generator tona. Rad ovog generatora tonova temeljenog na Arduinu objasnjen je korak po korak u C kodu danom u nastavku.
