Hola, buen dia. Hace unos días tuve un examen el cual pase con trampa, consistia en hacer que el codigo hicera encender 3 LEDS depende del numero que se ingresara (Centenas, Decenas y Unidades) es decir; si se ingresaba "124" se encencian todos si se ingresaba "56" se encendian 2 y si se ingresaba "9" solo se enceendia un LED. Pero habia un ejercicio extra que era si un numero llevaba un "0" se apagara el Led donde se colocara el "0" como "100, 200, 10, 20, 501, 210" entonces yo solo puse como valor unico al numero "100 y 10" y el profesor no lo noto y obtuve esos puntos extra, pero quisiera no quedarme con la duda, ¿Alguien podría decirme como hacerlo correctamente?
Abajo el codigo que use
int led_amarillo=12;
int led_rojo=13;
int led_verde=11;
String mensaje="";
void setup()
{
Serial.begin(9600);
pinMode(led_amarillo, OUTPUT);
pinMode(led_rojo, OUTPUT);
pinMode(led_verde, OUTPUT);
}
void loop()
{
Serial.println("Ingrese un NUMERO:");
//Espera hasta que llegue algo
while (Serial. available ()==0);
//Recbe el dato como entero
int val=Serial. parseInt ();
// Vacia el buffer
Serial.flush();
if(val>=101 && val <=999)
{
digitalWrite(led_amarillo, HIGH);
digitalWrite(led_rojo, HIGH);
digitalWrite(led_verde, HIGH);
mensaje="se encienden todos";
}
if(val>=11 && val<=99)
{
digitalWrite(led_amarillo, HIGH);
digitalWrite(led_rojo, LOW);
digitalWrite(led_verde, HIGH);
mensaje="se enciende el led amarillo y verde";
}
if(val>=1 && val<=9)
{
digitalWrite(led_amarillo, LOW);
digitalWrite(led_rojo, LOW);
digitalWrite(led_verde, HIGH);
mensaje="se enciende el led verde";
}
if(val==100)
{
digitalWrite(led_amarillo, LOW);
digitalWrite(led_rojo, HIGH);
digitalWrite(led_verde, LOW);
mensaje="se enciende el led rojo";
}
if(val==10)
{
digitalWrite(led_amarillo, HIGH);
digitalWrite(led_rojo, LOW);
digitalWrite(led_verde, LOW);
mensaje="se enciende el led amarillo";
}
if(val>=1000)
{
digitalWrite(led_rojo, HIGH); // enciende el LED.
delay(500); // retardo en milisegundos
digitalWrite(led_rojo, LOW); // apaga el LED.
delay(500);
digitalWrite(led_amarillo, HIGH); // enciende el LED.
delay(500); // retardo en milisegundos
digitalWrite(led_amarillo, LOW); // apaga el LED.
delay(500);
digitalWrite(led_verde, HIGH); // enciende el LED.
delay(500); // retardo en milisegundos
digitalWrite(led_verde, LOW); // apaga el LED.
delay(500);
}
if(val<=0)
{
digitalWrite(led_rojo, HIGH); // enciende el LED.
delay(500); // retardo en milisegundos
digitalWrite(led_rojo, LOW); // apaga el LED.
delay(500);
digitalWrite(led_amarillo, HIGH); // enciende el LED.
delay(500); // retardo en milisegundos
digitalWrite(led_amarillo, LOW); // apaga el LED.
delay(500);
digitalWrite(led_verde, HIGH); // enciende el LED.
delay(500); // retardo en milisegundos
digitalWrite(led_verde, LOW); // apaga el LED.
delay(500);
}
Serial.println("El numero es..");
Serial.println(val);
Serial.println(mensaje);
}