Quest'oggi, durante la 3° puntata dedicata ai sensori di Arduino, andremo a parlare dei buzzer, sia i modelli attivi sia i modelli passivi.

Ma fondamentalmente, cos'è un buzzer?
il buzzer è un piccolo altoparlante o trasduttore piezoelettrico, in grado di generare toni (i classici "beep").

Tramite Arduino, ed utilizzando appositi sketch e circuiti, è anche possibile fargli riprodurre della musica (per esempio la sigla di Super Mario oppure la "Marcia Imperiale" di Star Wars).

Andiamo adesso a vedere come collegare i buzzer ad Arduino e ad effettuare qualche prova di funzionamento.

Per fare ciò avremo bisogno di:
1) Arduino
2) Buzzer
3) 2/3 cavetti

Il collegamento è molto semplice: basterà connettere un cavetto al pin GND di Arduino ed un ulteriore cavetto ad un qualsiasi pin digitale di Arduino, e successivamente collegare il buzzer alle estremità dei cavetti.
 

La differenza tra buzzer attivo e passivo sta nel fatto che il tipo attivo riesce a riprodurre toni per conto suo (cioè appena viene alimentato inizia a riprodurre un tono preimpostato), mentre il tipo passivo non emette alcun suono preimpostato, ma necessita di una forma d'onda generata da Arduino, in modo da fare vibrare la membrana interna.

Vediamo adesso il codice che andremo a caricare sul nostro microcontrollore per utilizzare il buzzer passivo:

void setup() {
 pinMode(8,OUTPUT);
}

void loop() {
 tone(8,440,500);
 delay(500);
 tone(8,300,500);
 delay(500);
 tone(8,1000,500);
 delay(500);
 tone(8,2000,500);
 delay(100000);
}

 

Come primo passaggio andremo ad impostare nel SETUP il Pin PWM di Arduino che abbiamo scelto come uscita del segnale da far riprodurre al buzzer.

Successivamente nel LOOP andremo ad utilizzare una funzione spesso poco conosciuta, ossia la funzione TONE.
Questa funzione accetta soltanto 2-3 parametri.

Il 1° parametro sarà il numero del Pin scelto come uscita del segnale modulato; Il 2° parametro sarà la frequenza di riproduzione del suono; infine, il 3° parametro sarà la durata di riproduzione del tono (espresso in millisecondi).

Infine imposteremo un DELAY, in modo da avere un intervallo di tempo di funzionamento. Potremo eventualmente inserire anche una funzione noTone, che andrà a zittire il buzzer dopo un certo intervallo di tempo.

Se vogliamo invece andare a comporre della musica, basterà cercare su Google le parole chiave "note frequencies", per ottenere tutte le varie frequenze delle note musicali (da inserire però nel nostro codice senza i numeri decimali)


con una breve ricerca su Google è anche possibile trovare delle vere chicche, come il codice utilizzato per far suonare ad Arduino la famosissima "Marcia Imperiale" di John Williams, compositore delle musiche di Star Wars.
Sketch GitHub "Marcia Imperiale"

E con quest'ultima chicca da appassionato, arrivederci al prossimo articolo, che tratterà un componente utilizzato un po' ovunque in questi ultimi anni, ossia i LED RGB.