#14Intermedio

Impostazione della frequenza con cicalino

4.6(67)
109 completato
Impostazione della frequenza con cicalino
Progetto interattivo con 4 pulsanti che possono aumentare e diminuire la frequenza del cicalino, accenderlo e spegnerlo. Insegna la lettura multipla dei pulsanti e il controllo variabile.

Video

Schema circuito

Impostazione della frequenza con cicalino - Circuit

Codice sorgente

Arduino (C++)
1int buzzerPin = 8;
2int btnOn = 7;
3int btnOff = 6;
4int btnIncrease = 5;
5int btnDecrease = 4;
6int frequency = 300;
7int state = 0;
8
9void setup() {
10  pinMode(btnOn, INPUT);
11  pinMode(btnOff, INPUT);
12  pinMode(btnIncrease, INPUT);
13  pinMode(btnDecrease, INPUT);
14}
15
16void loop() {  
17  if (digitalRead(btnOn)) {
18    state = 1;
19  }
20  
21  if (digitalRead(btnOff)) {
22    state = 0;
23  }
24  
25  if (digitalRead(btnIncrease)) {
26    frequency = frequency + 50;
27    delay(100);
28  }
29  
30  if (digitalRead(btnDecrease)) {
31    frequency = frequency - 50;
32    delay(100);
33  }
34  
35  if (state == 1) {
36    tone(buzzerPin, frequency);
37  } else {
38    noTone(buzzerPin);
39  }
40}

FAQ

Perché si utilizzano resistenze da 220 Ω per i pulsanti?▾

Nel progetto, i pulsanti vengono letti con INPUT_PULLUP o pull-down; le resistenze in serie proteggono il pin da eventuali cortocircuiti. Nella configurazione pull-down si preferisce generalmente un valore di 10 kΩ; l'impostazione di pinMode nel codice deve essere compatibile con queste valori, a seconda della configurazione del circuito.

In quale intervallo di frequenza va regolata?▾

L'orecchio umano percepisce frequenze comprese tra circa 20 Hz e 20 kHz, ma i piccoli cicalini producono suoni ottimali nella gamma tra 500 e 5000 Hz. Impostando l'incremento o la diminuzione a 50–100 Hz, la variazione diventa udibile.

Quando tengo premuto il pulsante, la frequenza cambia rapidamente: come faccio a rallentarla?▾

Se la frequenza viene modificata ad ogni ciclo, tenere premuto provoca un aumento troppo rapido. O modifica la frequenza una volta per ogni pressione (rilevamento dei bordi) oppure aggiungi una breve pausa dopo la modifica.

Come posso impedire che la frequenza superi i limiti?▾

Con `constrain(frequenza, 100, 5000)` puoi mantenere il valore entro un determinato intervallo. In questo modo non si scende a frequenze troppo basse o troppo alte da risultare impercettibili.

Impostazione della frequenza con cicalino | BlueGrays