/* * MECRO FLIGHT CORE - PROYECTO 03: LUZ NOCTURNA AUTOMÁTICA
* Arquitectura: Lectura Analógica (ADC) y Divisor de Voltaje
* Hardware: ESP32, LDR, Resistencia 10k
*/
// --- 1. DEFINICIONES DE HARDWARE ---
// El ESP32 tiene dos ADCs. Usamos ADC1 (GPIOs 32-39) porque el ADC2
// tiene conflictos con el WiFi. GPIO 34 es solo entrada (Input Only), ideal para esto.
const int PIN_SENSOR = 34;
const int PIN_LED = 5; // LED externo indicador
// --- 2. CALIBRACIÓN (Empírica) ---
// El ESP32 lee de 0 a 4095 (12 bits de resolución).
// Configuramos el circuito: 3.3V -> LDR -> PIN 34 -> 10k -> GND.
// Luz = Resistencia Baja = Voltaje Alto en el pin.
// Oscuridad = Resistencia Alta = Voltaje Bajo en el pin.
const int UMBRAL_ENCENDER = 1000; // Si baja de esto, está oscuro -> LUZ ON
const int UMBRAL_APAGAR = 1500; // Si sube de esto, hay luz -> LUZ OFF
// La zona entre 1000 y 1500 es la "Zona Muerta" (Histéresis) para evitar parpadeos.
// Variable de estado
bool ledEncendido = false;
void setup() {
Serial.begin(115200);
pinMode(PIN_LED, OUTPUT);
// No necesitamos pinMode para analogRead, pero el pin debe estar libre.
Serial.println("--- MECRO SENSOR SYSTEM: ONLINE ---");
}
void loop() {
// 1. Adquisición de Datos
int lecturaRaw = analogRead(PIN_SENSOR);
// Convertir a voltaje para referencia ingenieril (Opcional, solo para debug)
float voltaje = (lecturaRaw / 4095.0) * 3.3;
// 2. Telemetría Serial (Plotter)
Serial.print("ADC:");
Serial.print(lecturaRaw);
Serial.print(" Voltaje:");
Serial.print(voltaje);
Serial.println("V");
// 3. Lógica de Control (Schmitt Trigger Software)
if (lecturaRaw < UMBRAL_ENCENDER && !ledEncendido) {
// Está oscuro y la luz está apagada -> Encender
digitalWrite(PIN_LED, HIGH);
ledEncendido = true;
Serial.println("-> ACCIÓN: Noche detectada. Luces ON.");
}
else if (lecturaRaw > UMBRAL_APAGAR && ledEncendido) {
// Hay mucha luz y la luz está encendida -> Apagar
digitalWrite(PIN_LED, LOW);
ledEncendido = false;
Serial.println("-> ACCIÓN: Día detectado. Luces OFF.");
}
delay(100); // Tasa de refresco de 10Hz
}