Bluetooth

Problema con una arduino UNO y un modulo bluetooth hc-05.

Vi un tutorial que enseñaba usar el modulo con una arduino uno, pero al intentar que funcione no anda. Deberia prender y apagar el led con un solo boton, y con otro prender y apagar el otro pero hace cosas raras, prendo uno y no se apaga, prendo el otro y se prenden los dos o el otro se apaga.

Pareceria que el problema es el !digitalRead.

#include <SoftwareSerial.h>

SoftwareSerial miBT (10,11);
char DATO= 0;
int LED1=2;
int LED2=3;

void setup(){
 
 miBT.begin(38400);
 pinMode (LED1, OUTPUT);
 pinMode (LED2, OUTPUT);
}

void loop(){
 if (miBT.available())  //lee BT y envia a Arduino
 DATO = miBT.read();
 if (DATO == '1')
  digitalWrite (LED1,!digitalRead(LED1));
  
 if (DATO == '2')
  digitalWrite (LED2,!digitalRead(LED2));
 }   
}

Les re agradezco desde ya.

digitalWrite (LED1,!digitalRead(LED1));

Estás intentando leer sobre un pin declarado como salida.
Deberías usar una bandera que te indique el estado actual de cada led y entonces cada vez que lees la activación del pulsador desde BT invertis esa bandera.

Lo que hace ese programa que Copio & Pegò es leer la salida e invertir su estado para que cada vez que presione 1 cambien de estado el led y lo misimo con 2. Eso esta bien.

Agrega esto luego de

if (miBT.available())  //lee BT y envia a Arduino
 DATO = miBT.read();
 Serial.println("" +String(DATO));

y agrega en el setup esto

void setup(){
 Serial.begin(9600); // o la velocidad de tu monitor serie que gustes
 miBT.begin(38400);
 pinMode (LED1, OUTPUT);
 pinMode (LED2, OUTPUT);
}

Lo que te indico no soluciona nada pero cada vez que presiones algo si no aparece 1 o 2 es porque tienes un problema. Tal vez la velocidad del BT no este debidamente emparejado con tu celular.

miBT.begin(38400);