Llevo unos dias trabajando con el modulo HC-05 y HC-06
los tengo trabajando con arduinos Nano a ambos, de primeras puedo decir que la comunicacion entre los modulos es exitosa y no he tenido problemas con eso.
Mi dilema esta en que quiero enviar los datos de un joystick para hacer un control remoto, pero tengo problemas en como recibir los datos, ya que los leds que tengo para testear la salida no estan respondiendo como lo quise en las condicionales, y ya llevo vario rato tratando de ver soluciones para que los datos sean interpretados de forma correcta por mi receptor.
Este es el codigo del Maestro, o el control
const int X = A0;
const int Y = A1;
int valorX;
int valorY;
void setup() {
Serial.begin(9600);
}
void loop() {
valorX = analogRead(X);
valorY = analogRead(Y);
String datos = "*"+String(valorX)+"#"+String(valorY)+"@";
Serial.print(datos);
delay(30);
}
Este es codigo del esclavo, o receptor
Ahi se puede ver como esta comentado mi anterior intento para recibir los datos, y tambien las condicionales que menciono mas arriba estan comentadas porque ahora solo necesito saber si los datos llegan bien o no. Estuve informadome acerca de como funcionan los String y como leerlos y convertirlos a datos enteros otra vez, que es lo que necesito para que funcionen mis condicionales.
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
int valorX;
int valorY;
char datoX;
char datoY;
bool paqueteCompleto;
void setup() {
Serial.begin(9600);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
}
void loop() {
String datos ="";
while (Serial.available() > 0) {
if(Serial.read() == '@') {
paqueteCompleto = true;
} else {
datos += Serial.read();
}
datos ="";
if(paqueteCompleto == true) {
valorX = datos.substring('*','#').toInt();
valorY = datos.substring('#','@').toInt();
}
/* datoX = Serial.read();
valorX = Serial.parseInt(); //Se recupera la siguente cantidad entera, despues del *
datoY = Serial.read();
valorY = Serial.parseInt(); */
Serial.print(valorX);
Serial.print(" X || ");
Serial.println(valorY);
////////////////
/* if (valorY >= 900) {
digitalWrite(A, HIGH);
} else {
digitalWrite(A, LOW);
}
if (valorY <= 150) {
digitalWrite(D, HIGH);
} else {
digitalWrite(D, LOW);
}
if (valorX >= 600) {
digitalWrite(A, HIGH);
digitalWrite(D, HIGH);
} else {
digitalWrite(A, LOW);
digitalWrite(D, LOW);
}
if (valorX <= 300) {
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
} else {
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}*/
}
}
Espero puedan ayudarme con mi dilema, aclaro que todavia estoy novato para el tema de los string y la comunicacion serial, ya he investigado pero no lo termino de entender.
Saludos