/*
* EJERCICIO: MI PRIMER BUCLE WHILE
* GRADO: 6TO
* MISION: Crear una alarma que solo funcione MIENTRAS presionamos el botón.
*/
// --- DEFINICION DE NOMBRES ---
// Usamos el LED azul interno del ESP32 (generalmente en el pin 2)
const int PIN_LED = 2;
// Usamos el pin 4 para conectar nuestro botón
const int PIN_BOTON = 18;
void setup() {
// 1. Iniciamos el monitor para ver mensajes en la pantalla
Serial.begin(115200);
// 2. Configuramos el LED como SALIDA (para emitir luz)
pinMode(PIN_LED, OUTPUT);
// 3. Configuramos el BOTÓN como ENTRADA con truco (INPUT_PULLUP)
// Esto significa:
// - Si NO lo tocas, el valor es 1 (HIGH).
// - Si LO TOCAS (conectas a tierra), el valor es 0 (LOW).
pinMode(PIN_BOTON, INPUT_PULLUP);
Serial.println("--- SISTEMA DE ALARMA LISTO ---");
}
void loop() {
// Parte A: Estado de Calma
// Mientras nadie toque el botón, el LED debe estar apagado.
digitalWrite(PIN_LED, LOW);
// Leemos el estado del botón (0 es presionado, 1 es suelto)
int estadoBoton = digitalRead(PIN_BOTON);
// ========================================================
// AQUÍ COMIENZA EL BUCLE WHILE (EL VIGILANTE)
// ========================================================
// Traducción: "MIENTRAS el botón esté presionado (LOW)..."
// El código se quedará atrapado aquí adentro repitiendo la alarma.
while (digitalRead(PIN_BOTON) == LOW) {
// Acción 1: Encender LED
digitalWrite(PIN_LED, HIGH);
Serial.println("¡ALERTA! Bucle While activado..."); // Mensaje en pantalla
delay(100); // Espera corta
// Acción 2: Apagar LED
digitalWrite(PIN_LED, LOW);
delay(100); // Espera corta
// NOTA IMPORTANTE:
// Al terminar estas líneas, el 'while' vuelve arriba y pregunta:
// "¿Todavía tienes el dedo en el botón?".
// Si la respuesta es SÍ, repite todo. Si es NO, se sale.
}
// ========================================================
// FIN DEL BUCLE WHILE
// ========================================================
// Si el código llega aquí, significa que soltaste el botón.
// Solo para asegurarnos, imprimimos un mensaje de calma.
// (Usamos un pequeño 'delay' para no llenar la pantalla de spam).
// Serial.println("Todo tranquilo. Esperando...");
delay(100);
}
No hay comentarios:
Publicar un comentario