
Il Buzzer
Quando progettiamo un impianto di automazione abbiamo quasi sempre bisogno di avvisare l’utente di uno stato o di un’anomalia. Oltre alle classiche spie luminose, un modo immediato per “farsi sentire” è impiegare un buzzer, noto colloquialmente come cicalino. Questo piccolo attuatore trasforma un segnale elettrico in un impulso sonoro che può variare da un semplice beep continuo a brevi toni di diversa frequenza.
Tipologie principali di buzzer
Attivo
Contiene un oscillatore interno che genera automaticamente la frequenza fissa non appena viene alimentato.
Con Arduino basta portare il pin di alimentazione a livello HIGH/LOW per abilitare o silenziare il suono.
Passivo
Non possiede oscillatore: necessita di un’onda quadra esterna per farlo vibrare.
Arduino può pilotarlo con PWM (analogWrite) o con la funzione tone() per scegliere la frequenza desiderata.
Tecnologie costruttive
I buzzer – siano essi attivi o passivi – possono realizzarsi con due differenti principi fisici:
- Magnetici
una bobina varia il campo magnetico e fa oscillare una sottile membrana metallica.
- Piezoelettrici
un disco di materiale piezo si deforma quando riceve tensione, generando la vibrazione acustica.
La scelta fra le due tecnologie dipende principalmente da:
- Segnale di pilotaggio disponibile (continua, PWM, ampiezza)
- Pressione sonora richiesta (volume)
- Spazio e forma concessi dal progetto
Come funziona un buzzer attivo

All’interno è presente un piccolo circuito oscillatore che, alimentato in continua, fa variare il campo magnetico di una bobina. La bobina è rigidamente accoppiata a una membrana, la quale vibra alla frequenza impostata dal circuito e produce un suono costante. In pratica: lo accendiamo – suona; lo spegniamo – tace.
Dati tecnici
- Tensione nominale: 6V DC
- Tensione di esercizio: 4-8V DC
- Corrente nominale: < 30mA
- Tipo di suono: segnale acustico continuo
- Frequenza di risonanza: ~2300 Hz
Come funziona un buzzer passivo

Il buzzer passivo è sprovvisto di oscillatore e si comporta come un piccolo altoparlante: emette il tono dell’esatta frequenza del segnale che riceve. Con Arduino possiamo quindi:
- generare una frequenza fissa con tone(pin, freq);
- modulare il duty-cycle tramite analogWrite() per variare il volume;
- creare melodie cambiando velocemente frequenza e durata.
Dati tecnici
- Tensione nominale: 5V DC
- Tensione di esercizio: 4-8V DC
- Corrente nominale massima: ≤ 32 mA
- Min. Uscita audio a 10 cm: 85 dB
- Temperatura di esercizio: da 20°C a 45°C
Poiché vogliamo utilizzare il buzzer dell’Arduino Sensor Kit a questo punto possiamo chiederci:
“ma di che tipo è il buzzer di questo kit?”
E’ un buzzer di tipo passivo.
Nelle spiegazioni abbiamo parlato di PWM, di seguito alcuni dettagli, ma se volete approfondire consultate le mie slide: Alfabeto Arduino – Lezione 2 e l’approfondimento su questo sito: Arduino – Approfondimenti sulla modulazione di larghezza di impulso (PWM).
Per uno studio ancora più approfondito: Secrets of Arduino PWM.
Che cos’è il PWM
La modulazione di larghezza d’impulso, o PWM (Pulse Width Modulation), è una tecnica che permette di ottenere effetti analogici usando mezzi digitali. Il controllo digitale genera un’onda quadra, un segnale che passa continuamente da acceso (ON) a spento (OFF). Variando la frazione di tempo in cui il segnale rimane acceso (alto) rispetto a quella in cui rimane spento (basso), è possibile simulare tensioni intermedie tra lo 0 V (spento) e i 5 V (acceso al 100 %). Il periodo in cui il segnale resta acceso si chiama larghezza dell’impulso. Modificando (ovvero modulando) questa larghezza si ottengono valori analogici diversi. Se la commutazione ON/OFF avviene abbastanza velocemente, il segnale risulta percepito come una tensione “media” continua compresa tra 0 V e 5 V.
Questo segnale PWM può dunque essere usato per controllare con facilità un buzzer passivo.
Per generare segnali PWM con Arduino si utilizza la funzione analogWrite(), mentre digitalWrite() produce solo segnali in corrente continua (DC).
Sulla tua scheda ci sono sei pin digitali contrassegnati dal simbolo “~” (tilde), che indica la capacità di gestire un segnale PWM: 3, 5, 6, 9, 10, 11. Questi sono chiamati pin PWM.
Collegamenti

Come abbiamo detto precedentemente Il buzzer del kit è passivo: non produce autonomamente il tono, ma vibra quando riceve un’onda quadra. Con analogWrite() inviate un’onda PWM; variando il duty-cycle (0-255) variate il volume.
Esempio 1: emissione di un beep
6 | const int BuzzerPin = 5; |
9 | pinMode(BuzzerPin, OUTPUT); |
13 | analogWrite(BuzzerPin, 128); |
15 | analogWrite(BuzzerPin, 0); |
Funzionamento del codice
- pinMode()
imposta il pin in uscita, così può fornire tensione
- analogWrite(pin, val)
genera un’onda quadra a ~490 Hz sul pin; val è il duty-cycle (0 = 0 %, 255 = 100 %)
- delay(ms)
pausa del programma – qui determina per quanto tempo il buzzer resta attivo/inattivo
Continua a leggere→