Problema al presionar un pulsador [No encienden los Leds]

Buenas noches.
Estoy realizando un proyecto que incluye:
1.Dos Leds y un pulsador.
2.Un Led RGB, un servo y un Fotorresistor.
3.Un sensor ultrasonico.

Cuando inicio el simulador de mi proyecto en Tinkercad, todo funciona como debería menos los dos Leds. Se supone que al presionar un pulsador, deberian encenderse ambos Leds, pero eso no sucede. Aclaro que cada parte de este proyecto (1,2 y 3) los realice por separado y al final los junte en un solo sketch.
Mi conocimiento en Arduino no es amplio y me estoy manejando con el material que mi profesor me ha dado e internet.

Acá dejo el código y una captura de pantalla del circuito:

#include <Servo.h>

Servo SERVOFARITO;
const int LED1 = 12; //CASA
const int LED2 = 13; //CASA
const int PULSADOR = 8; //CASA
int push_lee = 0; //CASA
int estadoLed = 0; //CASA
int estadoAnterior = 0; //CASA

const int LEDFARO1 = 7; //FARO
const int LEDFARO2 = 4; //FARO
const int LEDFARO3 = 2; //FARO
const int LDRPin = A0; //Fotorresistencia del FARO
const int luz = 300; //FARO
int pos = 10; //FARO

const int TRIG = 6; //SENSOR
const int ECHO = 5; //SENSOR
const int BUZ=10; //SENSOR
long distancia; /*más de 8 digitos (en centimetros).*/ //SENSOR
long tiempo; /*calcula el tiempo que tarda en ir y volver ese sonido.*/ //SENSOR

void setup() 
 {
  SERVOFARITO.attach(9);
  pinMode(PULSADOR, INPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LEDFARO1,OUTPUT);
  pinMode(LEDFARO2,OUTPUT);
  pinMode(LEDFARO3,OUTPUT);
  pinMode(LDRPin, INPUT);
  pinMode(6, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/ /*Salida.*/
  pinMode(5, INPUT); /*Entrada.*/
  pinMode(BUZ, OUTPUT); /*Pin 10 de salida (BUZZER)*/
  Serial.begin(9600);
 }

void loop() 

{
  
//CASA
  push_lee = digitalRead(PULSADOR);
  if ((push_lee == HIGH) && (estadoAnterior == LOW)) 
  {
   estadoLed = 1-estadoLed;
   delay(10);
  }
 
  estadoAnterior = push_lee;
  
  if (estadoLed == 1) 
  {
   digitalWrite(LED1, HIGH);
   digitalWrite(LED2, HIGH);
  }
  else 
  {
   digitalWrite(LED1, LOW);
   digitalWrite(LED2, LOW);
  }
  
//FARO
  int entrada = analogRead(LDRPin);
  Serial.print("valor de lectura de la fotoresistencia es: ");
  Serial.println(entrada);
  delay(200);
  
  if (entrada < luz)
  
  {
    digitalWrite(LEDFARO1, HIGH);
    digitalWrite(LEDFARO2, HIGH);
    digitalWrite(LEDFARO3, HIGH);
    for (pos = 10; pos <= 170; pos ++) 
    { 
      SERVOFARITO.write(pos);
      delay(5); //Para que se note el movimiento [SI NO EL SERVO SE MOVERA A SU VELOCIDAD HABITUAL]
    }
    delay(800); //Cuando llegue a una esquina, se detenga un breve momento. 
     
    for (pos = 170; pos >= 10; pos --) 
    {  
      SERVOFARITO.write(pos);
      delay(5); //Para que se note el movimiento [SI NO EL SERVO SE MOVERA A SU VELOCIDAD HABITUAL]
    }
    delay(800); //Cuando llegue a una esquina, se detenga un breve momento.
  }
  
  else 

  digitalWrite(LEDFARO1, LOW);
  digitalWrite(LEDFARO2, LOW);
  digitalWrite(LEDFARO3, LOW);
  SERVOFARITO.write(0); //Al ser la entrada de luz mayor a 300, el servo se posiciona en 0°.
  
//SENSOR
  digitalWrite(6,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5); /*Espera 5 Microsegundos(Tiempo mas corto)*/
  digitalWrite(6, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10); /*Esperamos 10µs. El pulso sigue active este tiempo*/
  digitalWrite(6, LOW); /* Cortamos el pulso y a esperar el echo*/
  tiempo=pulseIn(5, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 8 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
  /*Monitorización en centímetros por el monitor serial*/
    
  if (distancia <= 20 )
  {
     tone(BUZ,440);
     delay(300/distancia);
     noTone(BUZ); 
  }
    
  else 
  {
     digitalWrite(BUZ,LOW);
     delay(1000);
  }
    
  Serial.print("Distancia ");
  Serial.print(distancia);
  Serial.println(" cm");
  delay(1000);

}

PD: Busqué por todas partes a ver si encontraba la solución y nada. Mi último recurso es pedir ayuda acá. Gracias

Bienvenido al foro y mi enhorabuena por haber posteado correctamente tanto imagen como código.

Tu código tiene un problema llamado delay, hay por todos lados. Imagina que cualquier código se ejecuta practicamente al instante, menos la función delay que bloquea el programa. Si cuando pulsas un botón estas esperando en un delay, no lo detecta. Si tienes varios delays seguidos y he visto de dos segundos en el codigo significa que cada dos segundos comprueba el boton...

La solución es reestructurar el código para hacerlo con millis

Muchas gracias por la respuesta! Al menos ya se porque no funcionan los leds. El problema que tengo ahora es que no entiendo como funciona millis y que debo modificar.
Si no es mucha molestia, podria indicarme que debo cambiar en el código?

Muchas gracias nuevamente.

De momento te recomiendo que mires el INDICE DE TEMAS DE TUTORIALES, los primeros son sobre la explicación y funcionamiento de millis.

También te recomiendo el tema sobre máquinas de estados.

Luego cambiaría ciertas cosas:

Para leer el botón usaria una libreria de botones con debounce, la que recomiendo siempre es JC_Button, pero hay muchas, sobre gustos colores.

Para usar el servo, buscaria una alternativa asincrona, por ejemplo la que se comenta en el blog de LUIS LLAMAS. La libreria Servo de arduino es bloqueante, así que mientras mueves el servo no hace otra cosa.

Y por último miraría la libreria NewPing para controlar el sensor. No es que la función sea muy critica, pero en determinadas circunstancias puede llegar a bloquear el código.

Una vez sepas como funciona millis y el uso de las librerias, es cuestión de aplicar lo aprendido.

Muchas gracias por la ayuda y por los consejos! Justo hoy he notado que mientras el servo se mueve, no realiza otra función.
Estaré viendo la información que me dió y a ver si logro terminar el proyecto.

Una vez más, muchas gracias y saludos!

victorjam:
Para usar el servo, buscaria una alternativa asincrona, por ejemplo la que se comenta en el blog de LUIS LLAMAS. La libreria Servo de arduino es bloqueante, así que mientras mueves el servo no hace otra cosa.

no es verdad. La librería no es bloqueante. Es el for con el delay(5) Para ralentizar el movimiento del servo que bloquea. hay librerías con la opción de indicar la velocidad, p.e. Los moba-tools. Pero esta en Alemán.