#define LEDR 23
#define LEDV 22

#define tiempo_high 1000  //msec  a 1
#define tiempo_low  1000  //msec a 0

unsigned long tic, tac;

void espera_millis(int valor, unsigned long tiempo_espera){
    tic=millis();
    do{
    // valor --> serial plotter
    tac=millis();
    }
    while(tac-tic<tiempo_espera);
    return;
}

unsigned char letra; // variable para almacenar el byte leido del buffer serie

// simulador online wokwi -> https://wokwi.com/projects/375288720477722625


void setup() {
  pinMode(LEDR, OUTPUT);
  pinMode(LEDV, OUTPUT);
  letra='V'; //empieza en verde
  Serial.begin(115200);  // speed for Serial communicationç
  Serial.print("\nPulse R o V y presione enter:\n");
}

void loop() {

  

  switch(letra){  
    case 82:
     
     digitalWrite(LEDR, HIGH);
     espera_millis(1, tiempo_high);
     digitalWrite(LEDR, LOW);
     espera_millis(0, tiempo_low);
     Serial.println("ROJO");
     

    break;
    
    case 86:
    
     digitalWrite(LEDV, HIGH);
     espera_millis(1, tiempo_high);
     digitalWrite(LEDV, LOW);
     espera_millis(0, tiempo_low);
     Serial.println("VERDE");
     
    break;
  }

  
  if (Serial.available()>0) {  // 
  letra = Serial.read(); // leer el byte actual
   
  
  
  delay(100);  //pausa de 100 ms, damos tiempo a que entren otros caracteres por el puerto serie
  do {
  Serial.read(); // quitar siempre el caracter de retorno de carro (Enter)
  }while(Serial.available());
  
  Serial.printf("\nPulse otra tecla\n");

  }

 return;
 
 }

$abcdeabcde151015202530354045505560fghijfghij