În acest proiect vom dezvolta un generator de tonuri folosind Arduino Uno. Vom avea butoane interfațate cu UNO și fiecare dintre ele generează o intensitate diferită a tonului. Frecvența tonului generat de UNO este aceeași la fiecare intern. Este intensitatea sunetului care se schimbă la fiecare apăsare. Acesta este cel mai simplu mod de a face un pian cu Arduino Uno. Verificați și acest circuit de pian.
Tonurile pot fi mărite până la 20. Acest lucru oferă cea mai bună variație a tonului și modificări mult mai fine. Intensitatea tonului este modificată de PWM (Pulse Width Modulation). Un exemplu de PWM este prezentat în graficul de mai jos.
În PWM, frecvența semnalului sau perioada de timp a semnalului (Ton + Toff) este întotdeauna constantă. Se schimbă doar raportul dintre TURN ON și TURN OFF. De exemplu, în al doilea grafic din figura de mai sus, timpul de PORNIRE este de 80%, iar timpul de OPRIRE este de 20% din durata completă.
În al treilea grafic, timpul de PORNIRE este de 50%, iar timpul de OPRIRE este de 50% din durata completă. Deci, în primul caz, avem un raport de impozitare de 80%, iar în al doilea caz, avem un raport de impozitare de 20%.
Cu această modificare a raportului de funcționare avem o schimbare în Vrms (valoarea medie a rădăcinii pătrate a tensiunii), atunci când această tensiune este dată buzzerului, acesta produce un zgomot diferit ori de câte ori există o modificare a raportului de funcționare.
Urmează să programăm UNO pentru a furniza un semnal PWM cu un raport de funcționare diferit pentru fiecare buton. Deci, avem un generator de tonuri la îndemână, care generează un ton diferit la fiecare apăsare a butonului.
Componente necesare
Hardware: Arduino Uno, sursă de alimentare (5v), condensator 1000 uF, condensator 100 nF, buzzer, butoane (8 bucăți).
Software: AURDINO seara sau Atmel studio 6.2
Diagrama circuitului și explicația de lucru
Circuitul pentru generatorul de tonuri este prezentat în diagrama de mai jos.
Pentru a filtra zgomotul de la tensiunea de alimentare, condensatorii sunt așezați la terminale așa cum se arată în diagramă.
PWM-ul Arduino Uno poate fi realizat la oricare dintre pinii simbolizați ca „~” pe placa PCB. Există șase canale PWM în UNO. Cu toate acestea, nu putem utiliza pinii PWM stabiliți peste PIN-urile 0-7, deoarece PIN-urile sunt preferate pentru interfața butoanelor.
Există un motiv pentru selectarea PIN-urilor 0-7 ca intrări, deoarece PIN-urile 0-7 reprezintă PORTD-ul microcontrolerului. Deci, în acest din urmă caz, putem lua BYTE-ul complet al PORTD.
Acum, pentru a obține un PWM diferit, vom folosi următoarea comandă.
analogWrite (9, VALUE); |
Din condițiile de mai sus putem obține direct semnalul PWM la pinul corespunzător. Primul parametru dintre paranteze este pentru alegerea numărului pin al semnalului PWM. Al doilea parametru este pentru raportul de scriere.
Valoarea PWM a Arduino Uno poate fi modificată de la 0 la 255. Cu „0” cel mai mic la „255” cel mai mare. Cu 255 ca raport de taxă, vom obține 5V la PIN9. Dacă raportul de taxă este dat ca 125, vom obține 2,5V la PIN9. Vom împărți raportul de funcționare de la 0 la 250 între 8 butoane interfațate la PORTD din UNO. Aici aleg 25 de trepte pentru fiecare buton, dar este la alegerea ta.
Cu aceasta vom avea un semnal PWM al cărui raport de sarcină se modifică cu fiecare buton. Acest lucru fiind dat buzzerului, avem un generator de tonuri. Funcționarea acestui generator de tonuri bazat pe Arduino este explicată pas cu pas în codul C dat mai jos.