Tutorial 2: Control de Sonido con Potenciómetro y Buzzer

¿Qué vamos a hacer?

En este tutorial, aprenderás a trabajar con un potenciómetro y un buzzer (pasivo y activo) para controlar el sonido y la intensidad del LED de manera interactiva. A lo largo del tutorial, implementarás varias funcionalidades como:

  1. Leer valores analógicos con el potenciómetro.
  2. Controlar la intensidad del LED utilizando la lectura del potenciómetro.
  3. Generar tonos con el buzzer pasivo y activo (tú decides la frecuencia de los tonos).
  4. Crear una alarma sonora activada por un botón o sensor.

Materiales que necesitas:

  • ESP32-C3 SuperMini (1 unidad)
  • Potenciómetro de 10kΩ (1 unidad)
  • Cables de conexión
  • Protoboard (opcional)

¿Qué es un potenciómetro?

El potenciómetro es un componente electrónico que permite ajustar su resistencia mediante un eje rotatorio. A medida que giras el eje, cambia la resistencia entre dos terminales del potenciómetro, lo que permite variar el voltaje en el terminal central (wiper). Este componente se usa comúnmente en circuitos para controlar el valor de una señal analógica.

Conexión del circuito:

  1. Conecta el VCC del potenciómetro al pin de 5V del ESP32-C3.
  2. Conecta el GND del potenciómetro al pin GND del ESP32-C3.
  3. Conecta el wiper (pin central) del potenciómetro a GPIO3 (puedes usar GPIO1 o GPIO2 si no deseas usar GPIO3) del ESP32-C3.

Conexiado

Tutorial 2: Control de Sonido con Potenciómetro y Buzzer

Código:

Este código leerá el valor del potenciómetro en el pin GPIO3 y lo mostrará en el monitor serial.

const int potPin = 3;  // GPIO3 donde está conectado el wiper del potenciómetro

void setup() {
  Serial.begin(115200); // Inicia la comunicación serial
}

void loop() {
  int potValue = analogRead(potPin); // Lee el valor del potenciómetro (0-4095)
  Serial.print("Valor del Potenciómetro: ");
  Serial.println(potValue); // Imprime el valor leído
  delay(500); // Espera de medio segundo antes de leer nuevamente
}

Objetivo: En esta actividad, controlarás el brillo de un LED utilizando el valor leído del potenciómetro.

Conexión del circuito:

  1. LED:
    • Conecta el ánodo del LED al GPIO12 del ESP32-C3.
    • Conecta el cátodo del LED a GND a través de una resistencia de 220Ω.

Conexionado

Tutorial 2: Control de Sonido con Potenciómetro y Buzzer

Código:

Este código utilizará el valor del potenciómetro para ajustar el brillo del LED en función de la posición del potenciómetro.

const int potPin = 3;   // GPIO3 donde se conecta el wiper del potenciómetro
const int ledPin = 10;  // GPIO12 donde se conecta el LED

void setup() {
  pinMode(ledPin, OUTPUT);  // Configura el pin del LED como salida
  Serial.begin(115200);     // Inicia la comunicación serial
}

void loop() {
  int potValue = analogRead(potPin);  // Lee el valor del potenciómetro (0-4095)
  int brightness = map(potValue, 0, 4095, 0, 255);  // Mapea el valor a un rango de 0 a 255
  analogWrite(ledPin, brightness);  // Controla el brillo del LED con PWM
  delay(500);  // Espera medio segundo
}

Objetivo: En esta actividad, aprenderás a generar diferentes tonos con un buzzer (pasivo o activo), utilizando el potenciómetro para controlar la frecuencia del sonido.

¿Qué es un buzzer activo?

Un buzzer activo genera sonido por sí mismo cuando se le aplica voltaje. Este tipo de buzzer no requiere que se le envíe una señal de frecuencia; simplemente emite un sonido a una frecuencia fija cuando se le da corriente.

¿Qué es un buzzer pasivo?

Un buzzer pasivo requiere que se le envíe una señal de frecuencia específica para generar un tono. Puedes variar la frecuencia para generar diferentes tonos, lo que lo hace más versátil que el buzzer activo.

Conexión del circuito:

  1. Buzzer pasivo:
    • Conecta el positivo del buzzer a GPIO4 del ESP32-C3.
    • Conecta el negativo del buzzer a GND.
  2. Buzzer activo:
    • Conecta el positivo del buzzer a GPIO5 del ESP32-C3.
    • Conecta el negativo del buzzer a GND.

Conexionado

Tutorial 2: Control de Sonido con Potenciómetro y Buzzer

Código:

Este código utilizará el valor del potenciómetro para generar diferentes frecuencias de tono con el buzzer pasivo y activo.

const int potPin = 3;     // GPIO3 donde está conectado el wiper del potenciómetro
const int buzzerPin_pasivo = 4;  // GPIO4 donde está conectado el buzzer pasivo
const int buzzerPin_activo = 5;

void setup() {
  pinMode(buzzerPin_pasivo, OUTPUT);  // Configura el pin del buzzer como salida
  Serial.begin(115200);        // Inicia la comunicación serial
}

void loop() {
  int potValue = analogRead(potPin);  // Lee el valor del potenciómetro (0-4095)
  int frequency = map(potValue, 0, 4095, 100, 2000);  // Mapea el valor a frecuencia (100Hz - 2000Hz)
  tone(buzzerPin_pasivo, frequency);  // Genera el tono en el buzzer
  digitalWrite(buzzerPin_activo,HIGH);
  delay(250)
  digitalWrite(buzzerPin_activo,LOW);
  delay(250);  // Espera medio segundo
}

Objetivo: En esta actividad, utilizarás un botón o sensor para activar una alarma sonora en el buzzer. Cuando el botón se presione, el buzzer emitirá un sonido.

Material adicional:

  • Botón (1 unidad)

Conexión del circuito:

  1. Conecta un botón entre GPIO6 (u otro pin disponible) y GND del ESP32-C3.
  2. Conecta el buzzer como en la actividad anterior.

Conexionado

Tutorial 2: Control de Sonido con Potenciómetro y Buzzer

Código:

Este código lee el estado del botón y activa el buzzer cuando el botón está presionado.

const int buttonPin = 6; // GPIO6 donde está conectado el botón
const int buzzerPin = 4; // GPIO4 donde está conectado el buzzer

void setup() {
  pinMode(buzzerPin, OUTPUT);  // Configura el pin del buzzer como salida
  pinMode(buttonPin, INPUT_PULLUP);  // Configura el pin del botón con pull-up interno
  Serial.begin(115200);        // Inicia la comunicación serial
}

void loop() {
  int buttonState = digitalRead(buttonPin);  // Lee el estado del botón
  if (buttonState == LOW) {  // Si el botón está presionado
    tone(buzzerPin, 1000);  // Emite un tono de 1000Hz
  } else {
    noTone(buzzerPin);  // Detiene el buzzer si el botón no está presionado
  }
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *