domotica

Hola alguien me puede ayudar…
esto lo pubique en la mañana pero se ha borrado y no se porque
estoy haciendo un codigo para controlar leds por medio de bluetooth y pulsador el codigo me funciona con dos leds (con un pulsador cada uno) pero cuando le añado un tercer led (un comando nuevo) este empieza a parpadear y no puedo controlar los otros dos

#include <SoftwareSerial.h>

char DATO = 0;

int LED1 = 3 ;
int LED2 = 4 ;
int LED3 = 5 ;

int boton1 = 21 ;
int boton2 = 20 ;
int boton3 = 19 ;

bool estado1 = false;
bool estado2 = false;
bool estado3 = false;

SoftwareSerial miBT(10, 11);

void setup()
{
miBT.begin(38400);

pinMode( boton1, INPUT);
pinMode( LED1 , OUTPUT);
digitalWrite( LED1 , estado1 );

pinMode( boton2, INPUT);
pinMode( LED2 , OUTPUT);
digitalWrite( LED2 , estado2 );

pinMode( boton3, INPUT);
pinMode( LED3 , OUTPUT);
digitalWrite( LED3 , estado3 );
}

void loop()
{
if (miBT.available())
{
DATO= miBT.read();

if(DATO == ‘1’)
digitalWrite(LED1, !digitalRead(LED1));

if(DATO == ‘2’)
digitalWrite(LED2, !digitalRead(LED2));

if(DATO == ‘3’)
digitalWrite(LED3, !digitalRead(LED3));
}

bool valor1 = digitalRead(boton1) ;
if ( valor1 == false )
{
estado1 = ! estado1 ;
digitalWrite(LED1, estado1) ;
delay(500);
}

bool valor2 = digitalRead(boton2) ;
if ( valor2 == false )
{
estado2 = ! estado2 ;
digitalWrite(LED2, estado2) ;
delay(500);
}

bool valor3 = digitalRead(boton3) ;
if ( valor3 == false )
{
estado3 = ! estado3 ;
digitalWrite(LED3, estado3) ;
delay(500);
}
}