🔘 Tutorial - Programa de Pulsadores (2pulsadores.ino)

📋 Descripción: Este programa lee el estado de 4 pulsadores y enciende LEDs específicos según las propiedades matemáticas del número binario formado por los pulsadores.

🔌 Conexiones del Hardware

Pulsadores conectados:

Pin ESP32 Posición del Bit Valor del Bit Descripción
16 Bit 3 (MSB) 8 Bit más significativo
17 Bit 2 4 -
18 Bit 1 2 -
19 Bit 0 (LSB) 1 Bit menos significativo

LEDs conectados:

Pin ESP32 Color Condición Descripción
25 🟢 Verde Número PAR LED menos significativo
26 🟡 Amarillo Número IMPAR LED siguiente
27 🔴 Rojo Número PRIMO LED siguiente

Diagrama de Pulsadores

16
17
18
19

MSB ← → LSB

Pulsador presionado = 1, No presionado = 0

🎯 Condiciones de Encendido de LEDs

🟢 LED Pin 25 (Verde): Se enciende cuando el número formado por los pulsadores es PAR
🟡 LED Pin 26 (Amarillo): Se enciende cuando el número formado por los pulsadores es IMPAR
🔴 LED Pin 27 (Rojo): Se enciende cuando el número formado por los pulsadores es PRIMO

📊 Tabla de Ejemplos

Pulsadores Binario Decimal LEDs Encendidos Razón
0000 0000 0 Pin 25 0 es PAR
0001 0001 1 Pin 26, Pin 27 1 es IMPAR y PRIMO
0010 0010 2 Pin 25, Pin 27 2 es PAR y PRIMO
0011 0011 3 Pin 26, Pin 27 3 es IMPAR y PRIMO
0100 0100 4 Pin 25 4 es PAR
0101 0101 5 Pin 26, Pin 27 5 es IMPAR y PRIMO
0110 0110 6 Pin 25 6 es PAR
0111 0111 7 Pin 26, Pin 27 7 es IMPAR y PRIMO

⚙️ Funcionamiento del Programa

Flujo del Programa:

  1. Leer pulsadores con debounce para evitar lecturas erróneas
  2. Convertir la combinación de pulsadores a número decimal
  3. Verificar condiciones:
    • ¿Es PAR? → Encender LED pin 25
    • ¿Es IMPAR? → Encender LED pin 26
    • ¿Es PRIMO? → Encender LED pin 27
  4. Mostrar resultado en consola
  5. Repetir el proceso

💻 Código Clave

Función de debounce para pulsadores:

void leer_pulsadores() { unsigned long tiempo_actual = millis(); for (int i = 0; i < num_pulsadores; i++) { bool lectura = digitalRead(pin_pulsadores[i]); // Si el estado cambió y ha pasado suficiente tiempo (debounce) if (lectura != estado_anterior[i] && (tiempo_actual - ultimo_tiempo[i]) > tiempo_debounce) { estado_pulsadores[i] = lectura; ultimo_tiempo[i] = tiempo_actual; } estado_anterior[i] = lectura; } }

Función para verificar si es primo:

bool es_primo(int numero) { if (numero < 2) return false; if (numero == 2) return true; if (numero % 2 == 0) return false; for (int i = 3; i * i <= numero; i += 2) { if (numero % i == 0) return false; } return true; }

🔧 Instalación y Uso

Requisitos:

Esquema de conexión:

Pulsadores: - Pin 16 → Pulsador → GND (con resistencia pull-down de 10k) - Pin 17 → Pulsador → GND (con resistencia pull-down de 10k) - Pin 18 → Pulsador → GND (con resistencia pull-down de 10k) - Pin 19 → Pulsador → GND (con resistencia pull-down de 10k) LEDs: - Pin 25 → Resistencia 220Ω → LED Verde → GND - Pin 26 → Resistencia 220Ω → LED Amarillo → GND - Pin 27 → Resistencia 220Ω → LED Rojo → GND

Pasos de instalación:

  1. Conecta los pulsadores y LEDs según el esquema
  2. Abre el archivo 2pulsadores.ino en Arduino IDE
  3. Selecciona la placa ESP32 en Herramientas → Placa
  4. Configura el puerto serie correcto
  5. Sube el código al ESP32
  6. Abre el Monitor Serie (115200 baudios)

📊 Salida del Monitor Serie

Sistema de pulsadores iniciado Pulsadores: 19(LSB), 18, 17, 16(MSB) Combinación: 0000 = 0 (decimal) - PAR Combinación: 0001 = 1 (decimal) - IMPAR PRIMO Combinación: 0010 = 2 (decimal) - PAR PRIMO Combinación: 0011 = 3 (decimal) - IMPAR PRIMO Combinación: 0100 = 4 (decimal) - PAR

🧮 Conceptos Matemáticos

Números Pares e Impares:

Números Primos:

⚠️ Solución de Problemas

Problema: Los pulsadores no responden
Solución: Verifica que estén conectados correctamente y que las resistencias pull-up estén funcionando
Problema: Lecturas erróneas de pulsadores
Solución: Aumenta el tiempo de debounce o verifica las conexiones
Problema: Los LEDs no se encienden
Solución: Verifica las conexiones de los LEDs y las resistencias

🎯 Objetivos de Aprendizaje

✅ ¡Felicidades! Has completado el tutorial del programa de pulsadores. Ahora puedes interactuar con el sistema usando los pulsadores y ver cómo se encienden los LEDs según las propiedades matemáticas del número formado.