Vamos a ver si consigo explicarme, de un lado tengo un Nano Every con dos pulsadores y un HC-05 como transmisor, el codigo es el siguiente:
// Boceto básico de Bluetooth HC-05_03_9600
// Conecte el módulo HC-05 y comunícate mediante el monitor serie
//
// El HC-05 tiene por defecto el modo de conmincación cuando se enciende por primera vez.
// Necesita ser colocado en modo AT
// Después de un restablecimiento de fábrica, la velocidad en baudios predeterminada para el modo de comunicación es 38400
//
//
// Pins
// BT VCC a Arduino 5V
// BT GND a GND
// BT RX a Arduino pin 11 (a traves de un divisor de voltaje)
// BT TX a Arduino pin 10 (no necesita divisor de voltaje)
#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11); // RX | TX
// Conecte el HC-05 TX al pin Arduino 10 RX.
// Conecte el HC-05 RX al pin Arduino 11 TX a través de un divisor de voltaje.
String c = "aa";
int subir_brazo = 9;
int bajar_brazo = 8;
void setup()
{
// Iniciar la comunicación serie con el equipo host
Serial.begin(9600);
Serial.println("Sketch: Mando_BT_Grua_1");
Serial.println("Arduino con HC-05 está listo");
// iniciar la comunicación con el HC-05 usando 38400
BTserial.begin(38400);
Serial.println("BTserial iniciado a 38400");
Serial.println("");
Serial.println("");
pinMode(subir_brazo, INPUT_PULLUP);
pinMode(bajar_brazo, INPUT_PULLUP);
}
void loop()
{
int up_brazo = digitalRead(subir_brazo);
int down_brazo = digitalRead(bajar_brazo);
if (up_brazo == LOW)
{
c = "sb";
Serial.println("Pulsado el boton subir_brazo, c=" + c);
BTserial.print(c);
Serial.println("Enviado a BTserial, valor de c=" + c);
c = "SB";
Serial.println("Cambiado valor de c, c=" + c);
Serial.println("");
delay(300);
}
if (down_brazo == LOW)
{
c = "bb";
Serial.println("Pulsado el boton bajar_brazo, valor de c=" + c);
BTserial.print(c);
Serial.println("Enviado a BTserial, valor de c=" + c);
c = "BB";
Serial.println("Cambiado valor de c, c=" + c);
Serial.println("");
delay(300);
}
}
Y el resultado por el monitor serie es:
Como se puede ver el resultado es correcto, pulse el boton que pulse c siempre toma el valor correcto.
Ahora vamos al receptor, este está compuesto de un ATmega 2560, dos leds y un modulo HC-05, el codigo es:
// Boceto básico de Bluetooth HC-05_03_9600
// Conecte el módulo HC-05 y comunícate mediante el monitor serie
//
// El HC-05 tiene por defecto el modo de conmincación cuando se enciende por primera vez.
// Necesita ser colocado en modo AT
// Después de un restablecimiento de fábrica, la velocidad en baudios predeterminada para el modo de comunicación es 38400
//
//
// Pins
// BT VCC a Arduino 5V
// BT GND a GND
// BT RX a Arduino pin 11 (a traves de un divisor de voltaje)
// BT TX a Arduino pin 10 (no necesita divisor de voltaje)
#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11); // RX | TX
// Conecte el HC-05 TX al pin Arduino 10 RX.
// Conecte el HC-05 RX al pin Arduino 11 TX a través de un divisor de voltaje.
String c = "aa";
void setup()
{
// Iniciar la comunicación serie con el equipo host
Serial.begin(9600);
Serial.println("Sketch: Receptor_BT_Grua_1");
Serial.println("Arduino con HC-05 está listo");
// iniciar la comunicación con el HC-05 usando 38400
BTserial.begin(38400);
Serial.println("BTserial iniciado a 38400");
Serial.println("");
Serial.println("");
pinMode(LED_BUILTIN, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
if (BTserial.available())
{
c = BTserial.read();
Serial.println("Recibido de BTserial, valor de c=" + c);
if (c == "sb")
{
Serial.println("Entramos en el if de c==sb, valor de c=" + c);
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(200);
c = "SB";
Serial.println("Cambiado valor de c, c=" + c);
Serial.println("");
}
if (c == "bb")
{
Serial.println("Entramos en el if de c==bb, valor de c=" + c);
digitalWrite(8, HIGH);
delay(500);
digitalWrite(8, LOW);
delay(500);
c = "BB";
Serial.println("Cambiado valor de c, c=" + c);
Serial.println("");
}
}
}
Y el resultado por el monitor serie es:
Como se puede ver por por el monitor serie me saca el valor en la linea 44 del codigo pero no me salen los caracteres que yo he enviado incluso a veces aunque pulse el segundo pulsador me repite el valor del primero (marcado en rojo)
Y no entra en ninguno de los dos if ¿porque no me llegan las cadenas "sb" o"bb"
Un saludo