jueves, 12 de marzo de 2026

MY FIRST WHILE LOOP CODE


/*

 * 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