Buenas tardes, necesito encender un led y que al cabo de 1 segundo apague de manera automática y no vuelva a encender hasta que vuelva a enviar el carácter "e" , " f ".
Con este código cunado envió carácter "e" o "f" queda parpadeando, yo necesito que cuando envié el carácter "e" encienda solo 1 segundo y no vuelva a encenderse hasta que lo vuelva a enviar.
Desde ya muchas gracias.
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT); // On-Off Led rojo
pinMode(12,OUTPUT); // On-Of Led azul
pinMode(11,OUTPUT); // Pulso para encender Led amarillo (1 segundo)
pinMode(10,OUTPUT); // Pulso para encender Led verde (1 segundo)
delay(1000);
void loop(){
if(Serial.available()>0){
estado = Serial.read();
}
if(estado== 'a'){
digitalWrite(13,HIGH); // ON Led rojo
}
if(estado== 'b'){
digitalWrite(13,LOW); // OFF Led rojo
}
if(estado== 'c'){
digitalWrite(12,HIGH); // ON Led azul
}
if(estado== 'd'){
digitalWrite(12,LOW); // OFF Led azul
}
if(estado== 'e' ){
digitalWrite(11,HIGH); // Pulso Led amarillo (1 segundo)
delay(1000);
digitalWrite(11,LOW);
}
if(estado== 'f'){
digitalWrite(10,HIGH); // Pulso Led verde (1 segundo)
delay(1000);
digitalWrite(10,LOW);
}
}
No es que yo sepa mucho de programación pero si no te funcionó con delay, podrías probar con un return nulo
if(estado== 'e' ){
digitalWrite(11,HIGH); // Pulso Led amarillo (1 segundo)
delay(1000);
digitalWrite(11,LOW);
return() // nueva línea para evitar ciclo
}
if(estado== 'f'){
digitalWrite(10,HIGH); // Pulso Led verde (1 segundo)
delay(1000);
digitalWrite(10,LOW);
return() // nueva línea para evitar ciclo
}
El código de @MaxiCane está bien el único problema es que como el valor de estado siempre es 'f' siempre se va a mantener encendido por lo que tienes que borrar el valor de estado cuando se cumple el tiempo que se mantiene encendido, ahora yo no utilizaría tanto if si no un switch case.