
Video
Diagrama del circuito

Código fuente
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}Preguntas frecuentes
¿Por qué se utiliza una resistencia de 220 Ω para los pulsadores?▾
En el proyecto, los botones se leen mediante INPUT_PULLUP o pull-down; las resistencias en serie protegen el pin frente a posibles cortocircuitos. En la configuración pull-down, se suele optar por 10 kΩ; la configuración de pinMode en el código debe ser compatible con estos valores, según la forma de conexión del circuito.
¿En qué intervalo se debe modificar la frecuencia?▾
El oído humano percibe frecuencias entre aproximadamente 20 Hz y 20 kHz, pero los pequeños zumbadores emiten mejor el sonido en el rango de 500 a 5000 Hz. Si se elige un intervalo de aumento o disminución de 50 a 100 Hz, el cambio se hace perceptible.
Cuando mantengo pulsado el botón, la frecuencia cambia muy rápido, ¿cómo puedo ralentizarla?▾
Si se cambia la frecuencia en cada ciclo, mantener pulsado provocará un aumento muy rápido. O bien cámbiala una vez por cada pulsación (detección de bordes), o bien añade una breve pausa tras el cambio.
¿Cómo puedo evitar que la frecuencia se salga de los límites?▾
Con «constrain(frecuencia, 100, 5000)» puedes mantener el valor dentro de un intervalo determinado. De este modo, no se bajará a frecuencias demasiado bajas ni a frecuencias tan altas que resulten inaudibles.
