Práctica 1: ESP32 Entradas y Salidas Digitales
En esta práctica, usamos un ESP32 DevKitC para implementar un simple sistema de entradas y salidas que nos permita simular un comportamiento lógico AND y OR usando dos botones y un diodo LED.
Materiales:
- 1x ESP32 DevKitC
- 2x Pushbutton de 2.54mm
- 1x LED Rojo
- 1x Protoboard
Paso 1: Preparar el entorno de desarrollo
Instalar Arduino IDE (o VS Code + PlatformIO), añadir el gestor de placas “esp32” y seleccionar “ESP32 DevKitC” en el puerto COM adecuado. Usamos la ventana de preferencias en el Arduino IDE (ctrl + ;) para pegar este link: https://espressif.github.io/arduino-esp32/package_esp32_index.json
Dicha URL nos permitirá instalar múltiples tarjetas ESP32 compatibles con Arduino.

Paso 2: Conocer el pinout de la DevKit
Consultamos el diagrama oficial de pines e identificamos los GPIO de salida que queremos utilizar.

Paso 3: Montaje del LED
Conecté un LED entre los pines 27 y 14 del ESP32, no utilizamos resistencia en este caso dado que el voltaje del GPIO es directamente compatible con el LED, así como también la corriente está limitada internamente en el microcontrolador. El conectar los elementos a los GPIO directamente nos permite cambiar la polaridad en código y simplifica enormemente nuestro cableado, con la consigna de que sólo es posible alimentar circuitos que no superen los 30mA.
Usamos un código simple para encender el LED y comprobar su funcionamiento.

Paso 4: Conectar Botones
Añadimos dos botones entre los pines 4 - 16 y 18 - 19 . El pin que manejará la lectura de cada botón deberá configurarse con pull-down interno para evitar lecturas flotantes y estados indefinidos.

Paso 5: Lógica OR con dos botones
Usamos un estado lógico OR directamente implementado en el código para lograr el
comportamiento deseado
(if(b1 || b2)
) al controlar el LED.
// Pines para ESP32 DevKitC:
#define LED 27
#define LEDGND 14
#define BT1 18
#define BT1GND 19
#define BT2 16
#define BT2GND 4
const int DelayConst = 1000;
void setup() {
// Configuración de Pines
pinMode(LED, OUTPUT);
pinMode(LEDGND, OUTPUT);
pinMode(BT1GND, OUTPUT);
pinMode(BT2GND, OUTPUT);
pinMode(BT1, INPUT_PULLUP);
pinMode(BT2, INPUT_PULLUP);
digitalWrite(LEDGND, LOW);
digitalWrite(BT1GND, LOW);
digitalWrite(BT2GND, LOW);
}
void loop() {
//Lógica Booleana
if(digitalRead(BT1) == false || digitalRead(BT2) == false){
digitalWrite(LED, HIGH);
}
else{
digitalWrite(LED, LOW);
}
}
Demostración de la lógica OR con dos botones controlando el LED.
Paso 6: Lógica AND con dos botones
Ajustamos el sketch para usar lógica AND
(if(b1 && b2)
) y encender el LED sólo cuando ambos
botones estén pulsados.
Demostración de la lógica OR con dos botones controlando el LED.