Codigo para semaforo

Si ese es el caso, creaste una solución para el Led ROJO.
Ahora debes crear otras para Amarillo y Verde.
el amarillos será

if (numero >= 5 && numero <= 7) 

el verde

if (numero == 8  || numero == 9) 

ya que no puedes usar otra cosa que lo aprendido, entonces disminuye los delay a digamos 100 mseg y cuenta 5 para pasar a la otra opcion pero en todo momento debes hacerlo de otra forma.
Si quieres te explico cómo sería.

1 Like

lo habia pensado asi, pero no me anda, obviamente algo hago mal, cuando lo depuro pasa x el for n veces, y despues se va abajo, no vuelve a arrancar

const int SalidaLedVerde = 2;
const int SalidaLedAmarillo = 10;
const int SalidaLedRojo = 6;
char caracter = ' ';
bool estadoencendido = false;
String palabra = "";
int i = 0;

void setup()
{
    Serial.begin(9600);

    pinMode(SalidaLedVerde, OUTPUT);
    pinMode(SalidaLedAmarillo, OUTPUT);
    pinMode(SalidaLedRojo, OUTPUT);
}



void loop()
{
  
  if (Serial.available() > 0)
    {
        char letra = Serial.read();
        String palabra = String(letra);
        int numero = palabra.toInt();	
        if (numero < 5)
        {
            int i;
            for (i = 0; i < numero; i++) 
            {
                digitalWrite(SalidaLedRojo, HIGH);
                delay(100);
                digitalWrite(SalidaLedRojo, LOW);
                delay(100);
            }
      		if (numero >= 5 && numero <= 7) 
        	{
                digitalWrite(SalidaLedAmarillo, HIGH);
                delay(100);
                digitalWrite(SalidaLedAmarillo, LOW);
                delay(100);
            }
      		if (numero >= 8 && numero <= 9) 
        	{
                digitalWrite(SalidaLedVerde, HIGH);
                delay(100);
                digitalWrite(SalidaLedVerde, LOW);
                delay(100);
            }
       	  }  
  
      }
 }  
    

Revisa donde cierras los if().

Te doy una pista: si numero es menor que 5 nunca va a estar entre 5 y 7 o entre 8 y 9.

Saludos

1 Like