Codigo con LDR, LEDs y pulsadores.

Hola, si... el código por separado funciona pero esta mal escrito.

usar una función While.
Hace todo lo que esta dentro del while y hasta que no termina no "escucha" o "lee" botones.

Lo que necesitas hacer es escribir el código de manera que trabaje ininterrumpidamente.

El uso de un "delay" por ejemplo. Detiene todo... no lee botones no nada.

Tienes que escribir el codigo de manera que no bloquee las cosas.
Para cambiar delay por codigo sin bloqueo, pues estan muy claros los ejemplos en el Ide.

timer sin delay o algo asi.

1.- Evita los delays
2.- Evita los whiles
3.- usa una libreria (es mas sencillo) para leer e interpretar los botones.

Te recomiendo esta libreria:

sencilla, rapida y bastante configurable.

Animo y después nos cuentas como vas.

-Alex.