prender led y apagado automatico

buenos días tengo una pregunta es que soy nuevo y necesito algo , encender un led y que al cabo de dos segundos apague de manera automática y no vuelva a encender solo hasta que vuelva a darle la orden le agradezco su pronta respuesta serian de mucha ayuda

mas o menos mi programacion esta de esta manera
funciona todo pero el (pestillo electrico) esa parte no se como hacer

void setup(){
Serial.begin(9600); 
pinMode(13,OUTPUT); 
pinMode(12,OUTPUT); 
pinMode(11,OUTPUT); 
pinMode(10,OUTPUT); 
pinMode(9,OUTPUT);
}
void loop(){
if(Serial.available()>0){
estado = Serial.read();
}
if (estado =='a'){ 
digitalWrite(13,1);
}
if (estado =='b'){ 
digitalWrite(13,0);
}
if (estado =='c'){ 
digitalWrite(12,1);
}
if (estado =='d'){ 
digitalWrite(12,0);
}
if (estado =='s'){   // pestillo electrico
  digitalWrite(12,1);
  delay(500);
  digitalWrite(12,0);
  }
}

``

es necesario tener variables para cada uno de su LED para recordar el momento en que se enciende el LED y comprobar que si el retardo ha expirado. No hablo español - esto es sólo un traductor Google;-)

entrar en 's' se acaba de abrir y cerrar los LED en el pin 12 si el LED estaba apagado, o dejarla en un extra de 500 ms y apagarlo

véase el código para un ejemplo

unsigned long milliForLed13;;
unsigned long milliForLed12;;

#define KEEPONFOR 2000L    // turn off the led after 2 seconds

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);

  milliForLed13 = 0L;
  milliForLed12 = 0L;

}


void loop() {

  if (Serial.available() > 0) {
    estado = Serial.read();
  } else {
    estado = '0'    // important otherwise you'll keep executing the actions even if you did not receive data
  }

  // this is ugly :-) you need to use a switch case or at the very least use an ELSE statement because if you found 'a' there is no need to check the others

  if (estado == 'a') {
    digitalWrite(13, 1);
    milliForLed13 = millis();
  }

  if (estado == 'b') {
    digitalWrite(13, 0);
    milliForLed13 = 0L;
  }

  if (estado == 'c') {
    digitalWrite(12, 1);
    milliForLed13 = millis();
  }

  if (estado == 'd') {
    digitalWrite(12, 0);
    milliForLed13 = 0L;
  }

  if (estado == 's') { // pestillo electrico
    digitalWrite(12, 1);
    delay(500);
    digitalWrite(12, 0);
  }

  if (milliForLed13 != 0) {
    if (millis() - milliForLed13 >= KEEPONFOR) {
      digitalWrite(13, LOW);  // use LOW instead of 0, it's more readable
      milliForLed13 = 0L;
    }
  }

  if (milliForLed12 != 0) {
    if (millis() - milliForLed12 >= KEEPONFOR) {
      digitalWrite(12, LOW);   // use LOW instead of 0, it's more readable
      milliForLed12 = 0L;
    }
  }

}

Nadie nos prohíbe generar un hilo en la parte de habla inglesa, pero para eso hay que escribir en inglés.
Este hilo fue reportado por un usuario y lo traje para acá.
Saludos!

Buenas tardes, disculpa pero no entiendo que es lo que quieres hacer ya que dices una cosa pero el codigo hace otra totalmente distinta.

Tu código lo que hace es que al recibir la letra "a" enciende el led 13, la letra "b" apaga el led 13, la letra "c" enciende el led 12, la letra "d" apaga el led 12 y la letra "s" enciende el led 12 luego espera 500 milisegundos y apaga el led 12.

MI pregunta es: Cual led quieres encender y que se apague a los 2 segundos? Que quieres haces con la letra "s" ?

No se que traes en mente porque no te explicaste bien, mas sin embargo aca te dejo el código con delay. Muy importante que al usar delay tu programa no detectara otras letras hasta tanto se cumplan los 2 segundos de espera. En dado caso que quieras meter una letra antes de los 2 segundos deberas usar la función millis() pero implementada de una manera estrategica como BlinkWithoutDelay

void setup(){
Serial.begin(9600); 
pinMode(13,OUTPUT); 
pinMode(12,OUTPUT); 

}

void loop(){
if(Serial.available()>0){
estado = Serial.read();

if (estado =='a'){ 
digitalWrite(13,1);
delay(2000);
digitalWrite(13,0);
}

if (estado =='c'){ 
digitalWrite(12,1);
delay(2000);
digitalWrite(12,0);
}

if (estado =='s'){   // pestillo electrico
  digitalWrite(12,1);
  delay(500);
  digitalWrite(12,0);
  }
}
}

No se que hacer con la letras S ya que no explicas y aparte borre la letra B y D ya que las usas para apagar los leds pero realmente no es necesario ya que se apagaran automáticamente a los 2 segundos.

Saludos

Es obvio para mi, que este código que encontró en internet se adapta a lo que pretende pero no exactamente, así que copio el código lo pegó acá, pide lo que necesita y a ver si alguien se lo hace.