El código no sigue las siguientes ordenes

Saludos he estado mucho tratando de encender un led con un mensaje que llegue desde otro arduino maestro mucho me ayudaron al no comprender como soy principiante, pero ahora me encuentro con el que solo obedece una orden y no un listado de ordenes, ejemplo si llega la W, solo obedece la orden 1 y las demás no alguien me puede ayudar a que actúen todas las ordenes, saludos:

if(c=='W')
{
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
delay(1000);
digitalWrite(12, HIGH);
Serial.println("ON");
}

#include <Wire.h>



 
void setup() {
 Wire.begin(8);
 Wire.onReceive(receiveEvent); 
 Serial.begin(9600);           
 pinMode(12, OUTPUT);
}
 
void loop() {
delay(100);

}
 
// function that executes whenever data is received from master
void receiveEvent(int howMany) {
 while (0 <Wire.available()) {
    char c = Wire.read();
    
  if(c=='W') 
    {
      digitalWrite(12, HIGH);
      delay(1000);
      digitalWrite(12, LOW);
      delay(1000);
       digitalWrite(12, HIGH);
      Serial.println("ON");
    }
    if(c=='Y') 
    {
      digitalWrite(12, LOW);
       delay(500);
      digitalWrite(12, HIGH);
      delay(500);
       digitalWrite(12, LOW);
      Serial.println("OFF");
    }
   
  }

  
  }

Triple posteo.

Estas advertido @Raul_Montiel de no seguir abriendo hilos con el mismo tema.
Si desaparecen o se bloquean es porque estas faltando a las normas.
Sigue en el primer hilo.

http://forum.arduino.cc/index.php?topic=570539.0