Dopo la notevole tribolazione nel gestire la famigerata Matrice di LED 8×8 mi sono cimentato con la Lezione 7 del Tutorial Kuman Arduino UNO r3 che prevede l’utilizzo di un “Active Buzzer Module”.
Ebbene, non so se ho sbagliato qualcosa io – probabile – ma, di fatto, non sono riuscito a realizzare niente di simile al tutorial, o meglio: sembra che il tutorial faccia riferimento a componenti che non sono presenti nel kit – o quantomeno non sono identici – e comunque il tutorial stesso mi è sembrato poco chiaro.
Morale della favola ho realizzato una cosa tipo quella in figura:

Come prima cosa iniziamo dall’occorrente:
Assembly List
| Label | Part Type | Properties |
|---|---|---|
| Componente1 | Arduino Uno (Rev3) | tipo Arduino UNO (Rev3) |
| J1 | Piezo Speaker | |
| LED1 | Red (633nm) LED | colore Red (633nm); leg yes; package 5 mm [THT] |
| R1 | Trimmer Potentiometer | size Trimmer – 12mm; track Linear; package THT; maximum resistance 10kΩ; tipo Trimmer Potentiometer |
| R2 | 10kΩ Resistor | package THT; tolerance ±5%; bands 4; pin spacing 400 mil; resistenza 10kΩ |
| S1 | Pushbutton | package [THT] |
Shopping List
| Amount | Part Type | Properties |
|---|---|---|
| 1 | Arduino Uno (Rev3) | tipo Arduino UNO (Rev3) |
| 1 | Piezo Speaker | |
| 1 | Red (633nm) LED | colore Red (633nm); leg yes; package 5 mm [THT] |
| 1 | Trimmer Potentiometer | size Trimmer – 12mm; track Linear; package THT; maximum resistance 10kΩ; tipo Trimmer Potentiometer |
| 1 | 10kΩ Resistor | package THT; tolerance ±5%; bands 4; pin spacing 400 mil; resistenza 10kΩ |
| 1 | Pushbutton | package [THT] |
Poi lo schema di collegamento:


Questo il video che mostra il funzionamento:
Per scaricare lo Sketch per Ardino CLICCARE QUI mentre, per lo schema, CLICCARE QUI .
#define B10K_INPUT_PIN A0
#define BUZZER_PIN 9
#define MIN_TIMER 100
#define MIN_VALUE 504 // Valore minimo registrato dall'input
#define MAX_VALUE 519 // Valore massimo registrato dall'input
#define MAX_FREQUENCY 2300 // Frequenza Massima del Buzzer
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int iValue = analogRead(B10K_INPUT_PIN) - MIN_VALUE;
unsigned int uiFrequency = MAX_FREQUENCY * float(iValue) / MAX_VALUE;
int iTimer = iValue;
if (iTimer < MIN_TIMER) {
iTimer = MIN_TIMER;
}
Serial.println(String(iValue) + " / " + String(uiFrequency));
tone(BUZZER_PIN, uiFrequency);
delay(iTimer);
noTone(BUZZER_PIN);
delay(iTimer);
}
Sostanzialmente, agendo sul resistore variabile, si modifica il valore letto dalla porta “B10K_INPUT_PIN” (cioè la porta analogica di Arduino A0) e, di conseguenza, si va a variare la FREQUENZA alla quale deve suonare il Buzzer e anche il TEMPO di emissione del suono: più la resistenza è alta, maggiore è la frequenza e maggiore è il tempo nel quale viene emesso il suono e, viceversa, minore è la resistenza e minore è la FREQUENZA e il TEMPO.
Una peculiarità dello schema elettrico: a cosa serve la resistenza R2 da 10 kOhm ?
Senza, Arduino, va a leggere valori semi-casuali dalla porta dettati dalle interferenze elettriche presenti nel circuito. Inserendo invece un resistore che finisce al GND, invece, queste interferenze vengono annullate e si può leggere il valore del resistore variabile in modo affidabile.
In genere andrebbe messa pure un resistore sul LED, per evitare che si bruci. Nel mio caso non l’ho messo perché comunque c’é il Buzzer che ne fa le veci.