Necesito ayuda para dar intermitencia a luces con aplicacion android

Amigo necesita ayuda soy un poco novato en el tema y lo que tengo que hacer es mi proyecto que consiste en controlar todo el sistema electrico del automovil en este caso este codigo es para las luces direccionales, son controladas atravez de una aplicacion en app inventor para android, al presionar un boton se enciendan y al presionar el mismo boton se apaguen, pero eh intentado que se hagan intermitentes y no puedo quiero que ademas de ello al encenderlas estas produscan una intermitencia hasta que el boton sea de nuevo presionado y al presionar otra vez se apaguen nose si me hago entender, aquie esta el codigo gracias de antemano

int led1 = 12;
int led2 = 13;
boolean led1status=false;
boolean led2status=false;
int recib = 0;

void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
digitalWrite(led1, LOW );
digitalWrite(led2, LOW );
}

void loop() {
    if (Serial.available() > 0) {
    int recib = Serial.read();
    
    switch(recib){
    case 'a':
   if (led1status==false)
{
    digitalWrite(led1, HIGH);
    led1status=true;
    
    }
else 
{
digitalWrite(led1, LOW );
    led1status=false;
}

    break;
    
      
    case 'b':
 if (led2status==false)
{

digitalWrite(led2, HIGH);
   led2status=true;  
}


else 
{
digitalWrite(led2, LOW );
    led2status=false;
}

    break;
    }
    }
    }

a ver que tal funciona. Hice el intermitente solo con led1 porque no entendí bien como quieres hacerlo.

#define INTERVALO   500
const byte led1     = 12;
const byte led2     = 13;
boolean led1status  = false;
boolean led2status  = false;
boolean estado      = false;
boolean intermitente= false;
int recib           = 0;
unsigned long start;

void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  digitalWrite(led1, LOW );
  digitalWrite(led2, LOW );
}

void loop() {
  if (Serial.available() > 0) {
    int recib = Serial.read();
    
    switch(recib){
      case 'a':
                if (led1status==false)      {
                  digitalWrite(led1, HIGH);
                  led1status = true;
                }
                else  {
                  digitalWrite(led1, LOW );
                  led1status = false;
                }
                break;
     
      case 'b':
                if (led2status==false)  {
                  digitalWrite(led2, HIGH);
                  led2status = true;  
                }
                else       {
                  digitalWrite(led2, LOW );
                  led2status = false;
                }
                break;
      case 'i': intermitente = !intermitente; 
                break;

    }
  }
  if (intermitente)
     led_intermitente();
}


void led_intermitente() {
    if (millis()-start > INTERVALO) {
       estado = !estado;
       digitalWrite(led1, estado);
       start = millis();
    } 
}