V tomto projekte vyvinieme generátor tónov pomocou Arduino Uno. Budeme mať tlačidlá prepojené s UNO a každé z nich generuje inú intenzitu tónu. Frekvencia tónov generovaných UNO je rovnaká v každej internej sieti. Je to intenzita zvuku, ktorá sa mení pri každom stlačení. Toto je jeden z najjednoduchších spôsobov výroby klavíra s Arduino Uno. Skontrolujte tiež tento obvod klavíra.
Tóny je možné zvýšiť až na 20. To poskytuje najlepšiu variáciu tónov a oveľa plynulejšie zmeny. Intenzita tónu sa mení pomocou PWM (Pulse Width Modulation). Príklad PWM je uvedený v nasledujúcom grafe.
V PWM je frekvencia signálu alebo časové obdobie signálu (Ton + Toff) vždy konštantné. Mení sa iba pomer času ZAPNUTIA a VYPNUTIA. Napríklad v druhom grafe na vyššie uvedenom obrázku je čas ZAPNUTIA 80% a čas ZAPNUTIA 20% z úplného trvania.
V treťom grafe je čas ZAPNUTIA 50% a čas ZAPNUTIA 50% z úplného trvania. Takže v prvom prípade máme colný pomer 80% a v druhom prípade máme colný pomer 20%.
S touto zmenou pracovného pomeru máme zmenu vo Vrms (Root Mean Square value of Voltage), keď je toto napätie dané bzučiaku, vydáva iný šum vždy, keď dôjde k zmene pracovného pomeru.
Chystáme sa naprogramovať UNO tak, aby poskytovalo signál PWM s rôznym pomerom výkonu pre každé z tlačidiel. Takže máme po ruke generátor tónov, ktorý generuje iný tón pri každom stlačení tlačidla.
Súčasti sú povinné
Hardvér: Arduino Uno, napájanie (5 V), kondenzátor 1000 uF, kondenzátor 100 nF, bzučiak, tlačidlá (8 kusov).
Softvér: AURDINO nightly alebo Atmel studio 6.2
Schéma zapojenia a pracovné vysvetlenie
Obvod pre generátor tónov je zobrazený na nasledujúcom diagrame.
Na odfiltrovanie šumu z napájacích napätí sú kondenzátory umiestnené na svorkách, ako je to znázornené na diagrame.
PWM Arduino Uno je možné dosiahnuť na ktoromkoľvek z pinov symbolizovaných ako „~“ na doske plošných spojov. V UNO je šesť kanálov PWM. Nemôžeme však použiť PWM piny vytvorené cez PINS 0-7, pretože PINS sú preferované pre rozhranie tlačidiel.
Existuje dôvod pre výber PINS 0-7 ako vstupov, pretože PINS 0-7 predstavujú PORTD mikrokontroléra. Takže v druhom prípade môžeme vziať celý BYTE z PORTD.
Teraz, keď chceme získať iný pomer PWM, použijeme nasledujúci príkaz.
analogWrite (9, VALUE); |
Z vyššie uvedenej podmienky môžeme priamo získať signál PWM na zodpovedajúcom kolíku. Prvý parameter v zátvorkách slúži na voľbu počtu pinov signálu PWM. Druhý parameter je pre pomer písania.
Hodnotu PWM v Arduino Uno je možné zmeniť od 0 do 255. S „0“ ako najnižšou na „255“ ako najvyššou. S pomerom cla 255 dostaneme 5V na PIN9. Ak je ukazovateľ cla uvedený ako 125, dostaneme na PIN9 2,5 V. Rozdelíme prevádzkový pomer 0 - 250 medzi 8 tlačidiel prepojených na PORTD UNO. Tu zvolím 25 prírastkov pre každé tlačidlo, ale je to podľa vášho výberu.
S tým budeme mať signál PWM, ktorého pracovný pomer sa mení s každým tlačidlom. Toto je dané bzučiakom, máme generátor tónov. Fungovanie tohto generátora tónov na báze Arduino je vysvetlené krok za krokom v kóde C uvedenom nižšie.