Corso base di Arduino: musica con Arduino

banner prova1

Produrre note acustiche in elettronica è davvero molto semplice. È sufficiente far vibrare qualsiasi dispositivo sonoro (altoparlante, buzzer, etc.) molte volte al secondo, per generare dei suoni. E Arduino non esclude tale possibilità. Lo scopo finale è quello di accendere e spegnere, molto velocemente, una porta in uscita alla quale viene collegato il dispositivo di riproduzione sonora.

È necessario, però, che la frequenza di tale "treno d'impulsi" rientri in quella udibile dall'uomo, ossia compresa tra i 20 e i 20.000 Hz. Gli animali riescono anche a percepire frequenze superiori.

Riproduzione "grezza" della nota LA

Per riprodurre la nota musicale LA, corrispondente a 440 Hz, occorre generare un treno d'impulsi (ON-OFF) opportunamente cadenzato. La nota generata non risulterà molto pulita, in quanto caratterizzata da una forma d'onda quadra e non sinusoidale. Saranno presenti molte armoniche di disturbo ma, al momento, ciò è irrilevante. Per conoscere, dunque, la durata del periodo di tale frequenza occorre calcolare il suo reciproco, secondo la formula:

 

t=1/f

ossia:

t=1/440

 

In questo caso, l'intero periodo del segnale ha una durata di 0.0022727 secondi, pari a 2,2727 millisecondi (o 2272 microsecondi), metà dei quali con segnale di uscita pari a 5V (livello logico alto) e l'altra metà con segnale di uscita pari a 0V (livello logico basso). La successione dei due segnali, come visibile in figura 1) produce la nota di 440 Hz sull'altoparlante.

figura 1 onda quadra 440
Figura 1: onda quadra di 440 Hz

Bene, adesso che abbiamo compreso la modalità di generazione sonora, è semplice approntare uno sketch che esegua questo lavoro. Si comprenda come sia la matematica a legare questa tipologia di applicazione. Per il funzionamento del prototipo è sufficiente collegare la porta 9 di Arduino a un piccolo altoparlante, tramite una resistenza di 50-100 ohm.

figura 2 listato 440 hz
Figura 2: Lo sketch per la generazione di una nota 440 Hz

Se si assimila bene tale filosofia, è possibile generare qualsiasi nota (anche ultrasuoni) per ogni durata.

Uso della funzione tone()

La libreria di Arduino mette a disposizione una interessante funzione, bella e pronta, per produrre una nota acustica senza effettuare calcoli matematici di sorta. Si tratta della funzione tone() che accetta, come parametri, i seguenti argomenti:

tone(pin, frequency, duration) 

dove:

  • pin è il piedino di uscita del segnale audio
  • frequency è la frequenza di generazione, compresa tra 31 Hz e 65535 Hz
  • duration è la durata della nota, espressa in millisecondi. Tale parametro è opzionale.

Il segnale generato è sempre un'onda quadra con duty cycle al 50%. Ovviamente, la funzione non prevede la generazione polifonica delle note. Il seguente listato genera una semplice scala musicale (Do, Re, Mi, Fa, Sol, La, Si, Do).

figura 3 listato scala musicale
Figura 3: Lo sketch che utilizza la funzione tone()

Lo schema di collegamento è proposto in figura 4.

figura 4 collegamento
Figura 4: Il cablaggio del dispositivo di riproduzione sonora
Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.

Pubblicità

AREE TEMATICHE