5.8 Gira el Potenciómetro

Un potenciómetro es un dispositivo de tres terminales que se utiliza comúnmente para ajustar la resistencia en un circuito. Cuenta con un botón o una palanca deslizante que se puede utilizar para variar el valor de resistencia del potenciómetro. En este proyecto, lo utilizaremos para controlar el brillo de un LED, similar a una lámpara de escritorio en nuestra vida diaria. Al ajustar la posición del potenciómetro, podemos cambiar la resistencia en el circuito, regulando así la corriente que fluye a través del LED y ajustando su brillo en consecuencia. Esto nos permite crear una experiencia de iluminación personalizable y ajustable, similar a la de una lámpara de escritorio.

Componentes Necesarios

En este proyecto, necesitaremos los siguientes componentes.

Es definitivamente conveniente comprar todo el kit, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit de Inicio ESP32

320+

ESP32 Starter Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

ESP32 WROOM 32E

BUY

Extensión de Cámara ESP32

-

Protoboard

BUY

Cables Puente

BUY

Resistor

BUY

LED

BUY

Potenciómetro

BUY

Pines Disponibles

  • Pines Disponibles

    Aquí está la lista de pines disponibles en la placa ESP32 para este proyecto.

    Pines Disponibles

    IO14, IO25, I35, I34, I39, I36

  • Pines de Arranque

    Los siguientes pines son pines de arranque, que afectan el proceso de inicio del ESP32 durante el encendido o el restablecimiento. Sin embargo, una vez que el ESP32 se ha iniciado correctamente, se pueden utilizar como pines regulares.

    Pines de Arranque

    IO0, IO12

Esquemático

../../_images/circuit_5.8_potentiometer.png

Al girar el potenciómetro, el valor de I35 cambiará. Mediante programación, puedes usar el valor de I35 para controlar el brillo del LED. Por lo tanto, al girar el potenciómetro, el brillo del LED también cambiará en consecuencia.

Cableado

../../_images/5.8_potentiometer_bb.png

Código

Nota

  • Puedes abrir el archivo 5.8_pot.ino en la ruta esp32-starter-kit-main\c\codes\5.8_pot.

  • Después de seleccionar la placa (ESP32 Dev Module) y el puerto apropiado, haz clic en el botón Subir.

  • ¿Siempre aparece «COMxx desconocido»?

Después de subir el código con éxito, gira el potenciómetro y verás el brillo del LED cambiar en consecuencia. Al mismo tiempo, puedes ver los valores analógicos y de voltaje del potenciómetro en el monitor serie.

Cómo funciona?

  1. Define constantes para las conexiones de pines y configuraciones PWM.

    const int potPin = 14; // Potentiometer connected to GPIO14
    const int ledPin = 26; // LED connected to GPIO26
    
    // PWM settings
    const int freq = 5000; // PWM frequency
    const int resolution = 12; // PWM resolution (bits)
    const int channel = 0; // PWM channel
    

    Here the PWM resolution is set to 12 bits and the range is 0-4095.

  2. Configura el sistema en la función setup().

    void setup() {
        Serial.begin(115200);
    
        // Configure PWM
        ledcSetup(channel, freq, resolution);
        ledcAttachPin(ledPin, channel);
    }
    
    • En la función setup(), se inicia la comunicación Serial a una tasa de baudios de 115200.

    • La función ledcSetup() se llama para configurar el canal PWM con la frecuencia y resolución especificadas, y la función ledcAttachPin() se llama para asociar el pin LED especificado con el canal PWM.

  3. Bucle principal (ejecutado repetidamente) en la función loop().

    void loop() {
    
        int potValue = analogRead(potPin); // read the value of the potentiometer
        uint32_t voltage_mV = analogReadMilliVolts(potPin); // Read the voltage in millivolts
    
        ledcWrite(channel, potValue);
    
        Serial.print("Potentiometer Value: ");
        Serial.print(potValue);
        Serial.print(", Voltaje: ");
        Serial.print(voltage_mV / 1000.0); // Convierte milivoltios a voltios
        Serial.println(" V");
    
        delay(100);
    }
    
    • uint32_t analogReadMilliVolts(uint8_t pin);: Esta función se utiliza para obtener el valor de ADC para un pin/canal de ADC dado en milivoltios.

      • pin Pin GPIO para leer el valor analógico.

El valor del potenciómetro se utiliza directamente como el ciclo de trabajo PWM para controlar el brillo del LED a través de la función ledcWrite(), ya que el rango de valores también es de 0 a 4095.