Maquina de estado finito

Buen día arduineros!!! necesito de su ayuda, carácter urgente!
Les comento que tengo en funcionamiento un arduino mega, con un modulo LDR digital, y un modulo bluetooth (mismas lecturas por monitor serie)+
El problema se presenta que cuando se prende el foco que maneja el modulo LDR a través de un relé;
El LDR comanda' al Modulo bluetooth, es decir que cuando hago el condicionamiento para que el modulo bluetooth apage la luz a pesar de que el modulo ldr este sensando la ausencia de luz, no funciona!
sigue mandando el LDR .

Adjunto el codigo, por favor alguna alma bondadosa que me pueda orientar!!!

diego123.ino (1.4 KB)

Trate de analizar tu código pero deberías poner mas comentarios para que los demás entienda y nos facilitarias si lo pones como código y no como adjunto.

  1. El LDR debe ir en una entrada analogica (A0~A5) y no en el pin 10 que es digital. Ver ejemplo

  2. Veo que tienes 6 reles y definiste 12 estados (a~l). Ya que el rele solo puede estar en prendido o apagado porque no reduces los estados a solo 6 y si esta prendido que lo apague y viseversa.

digitalWrite(2,!digitalRead(2));
  1. Si en lugar de enviar letras envías el numero del pin (2~6) tu código seria muchas mas eficiente.
if (Serial.available() > 0){
   pin = Serial.read() - 48;
   digitalWrite(pin,!digitalRead(pin));   
}

Hi,
Yo creo que el problema es que el LDR no va dar un voltaje alto para leerlo como digital. Va a dar un voltaje dependiondo de la intensidad de la luz. Tienes que hacerlo leyendolo como un analog input. Haz una prueba y lee el voltaje cuando lo alumbras y determina cuando el voltaje es suficiente para energizar/degenizar el relay. No creo que el LDR te de voltaje para que lo puedas leer como digital. Creo Kike_GL estaba correcto en leerlo en un analog input.