domingo, 20 de mayo de 2018

ESP32 desde Cero - Tutorial 2: PWM, Touch Sensor, Entradas y Salidas Digitales


En este tutorial sobre ESP32, les voy a mostrar cómo usar la IDE de Arduino, para utilizar PWM, los Touch Sensors (sensores de tacto) que vienen implementados por hardwar y el uso de entradas/salidas digitales.


Código Fuente:

#define LEDC_CHANNEL_0     0    // use first channel of 16 channels (started from zero)
#define LEDC_TIMER_8_BIT   8    // use 8 bit precission for LEDC timer
#define LEDC_BASE_FREQ     5000 // use 5000 Hz as a LEDC base frequency
#define LED_PIN            5    // // Led Verde

int brillo = 0;    
int sensorT0 = 0;    
int sensorT3 = 0;   

void setup() {
  Serial.begin(115200);
  
  ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_8_BIT); // Setup timer and attach timer to a led pin
  ledcAttachPin(LED_PIN, LEDC_CHANNEL_0);
  
  pinMode(23, INPUT_PULLUP); // Pulsador
  pinMode(18, OUTPUT);       // Led Rojo
}

void loop() {

  sensorT0 = touchRead(T0);
  sensorT3 = touchRead(T3);
  
  if (sensorT0 < 35 and sensorT0 != 0) {
    brillo = brillo + 5;
    if (brillo >= 255) {
      brillo = 255;
    }
  }
  if (sensorT3 < 35 and sensorT3 != 0) {
    brillo = brillo - 5;
    if (brillo <= 0) {
      brillo = 0;
    }
  }
  
  Serial.println("T3=" + String(sensorT3) + " T0=" + String(sensorT0) + " Brillo=" + String(brillo));

  ledcWrite(LEDC_CHANNEL_0, brillo);
  
  digitalWrite(18, digitalRead(23));
  
  delay(50);
}






5 comentarios:

  1. Disculpas y el ESP8266 no tiene Pull-up internas por software..?

    ResponderEliminar
  2. Buenas, como se le asigna un puerto al programa para poder ver los valores en pantalla. En el IDE Arduino, voy a Herramientas y donde pone puerto esta en gris. Al subir el programa al ESP32 me sale "Please select a Port before Upload"

    ResponderEliminar
  3. Eso es porque la IDE de Arduino o tu computadora no detectan el puerto COM. Fijate si lo detecta en el administrador de dispositivos (si es que estás usando windows). Saludos

    ResponderEliminar
    Respuestas
    1. Al final era un problema con el cable, lo cambie de puerto en el pc y le asigno el COM4. Muchas gracias por la respuesta y tus enseñanzas.

      Eliminar
  4. Hola a mi me cambiaba mucho el brillo sin tocar los touch, lo resolvi cambiando al inicio del void loop asi:
    void loop() {
    cont = cont + 1;
    if (cont > 20) {
    cont = 0;
    }
    if (cont = 10) {
    sensorT0 = (touchRead(T0) + sensorT0)/2;
    sensorT3 = touchRead(T3);
    }
    y quedo absolutamente estable

    ResponderEliminar