In questo progetto svilupperemo un generatore di suoni utilizzando Arduino Uno. Avremo pulsanti interfacciati con UNO e ognuno di essi genera differenti intensità di tono. La frequenza del tono generata dall'UNO è la stessa in ogni interno. È l'intensità del suono che cambia ad ogni pressione. Questo è il modo più semplice per realizzare un pianoforte con Arduino Uno. Controlla anche questo circuito di pianoforte.
I toni possono essere aumentati fino a 20. Ciò fornisce la migliore variazione di tono e cambiamenti molto più fluidi. L'intensità del tono viene modificata da PWM (Pulse Width Modulation). Un esempio di PWM è mostrato nel grafico sottostante.
In PWM, la frequenza del segnale o il periodo di tempo del segnale (Ton + Toff) è sempre costante. Cambia solo il rapporto tra l'ora di ACCENSIONE e SPEGNIMENTO. Ad esempio, nel secondo grafico nella figura sopra, il tempo di ACCENSIONE è dell'80% e il tempo di SPEGNIMENTO è del 20% della durata completa.
Nel terzo grafico, il tempo di ACCENSIONE è del 50% e il tempo di SPEGNIMENTO è il 50% della durata completa. Quindi nel primo caso abbiamo un rapporto di dazio dell'80% e nel secondo caso abbiamo un rapporto di dazio del 20%.
Con questa variazione del rapporto di lavoro si ha una variazione di Vrms (valore quadratico medio della tensione), quando questa tensione viene fornita al cicalino emette un rumore diverso ogni volta che si verifica una variazione del rapporto di servizio.
Programmeremo UNO in modo che fornisca un segnale PWM con un rapporto di lavoro diverso per ciascuno dei pulsanti. Quindi abbiamo un generatore di suoni a portata di mano che genera un tono diverso ad ogni pressione del pulsante.
Componenti richiesti
Hardware: Arduino Uno, alimentatore (5v), condensatore da 1000 uF, condensatore da 100 nF, buzzer, pulsanti (8 pezzi).
Software: AURDINO nightly o Atmel studio 6.2
Schema del circuito e spiegazione del funzionamento
Il circuito per il generatore di suoni è mostrato nel diagramma sottostante.
Per filtrare il rumore dalla tensione di alimentazione, i condensatori sono posizionati tra i terminali come mostrato nel diagramma.
Il PWM di Arduino Uno può essere raggiunto su uno qualsiasi dei pin simbolizzati come "~" sulla scheda PCB. Ci sono sei canali PWM in UNO. Tuttavia non possiamo utilizzare i pin PWM stabiliti sui PIN 0-7, poiché i PIN sono preferiti per l'interfaccia dei pulsanti.
C'è un motivo per selezionare i PIN 0-7 come input, perché i PIN 0-7 rappresentano il PORTD del microcontrollore. Quindi in quest'ultimo caso possiamo prendere il BYTE completo di PORTD.
Ora per ottenere un diverso rapporto di lavoro PWM, useremo il seguente comando.
analogWrite (9, VALUE); |
Dalla condizione di cui sopra possiamo ottenere direttamente il segnale PWM sul pin corrispondente. Il primo parametro tra parentesi è per la scelta del numero di pin del segnale PWM. Il secondo parametro è per il rapporto di lavoro di scrittura.
Il valore PWM di Arduino Uno può essere modificato da 0 a 255. Con "0" come minimo, "255" come massimo. Con 255 come rapporto di lavoro avremo 5V a PIN9. Se il rapporto di lavoro è pari a 125, otterremo 2,5 V a PIN9. Divideremo il duty ratio di 0-250 tra 8 pulsanti interfacciati a PORTD di UNO. Qui scelgo 25 incrementi per ogni pulsante, ma è una tua scelta.
Con ciò avremo un segnale PWM il cui rapporto di lavoro cambia con ogni pulsante. Dato che viene dato al buzzer, abbiamo un generatore di suoni. Il funzionamento di questo generatore di suoni basato su Arduino è spiegato passo dopo passo nel codice C riportato di seguito.