Mandar y recibir datos constantes con HC-05 de Arduino a Arduino

Hola, he llegado aquí para conseguir orientación acerca de recibir y enviar datos con un módulo HC-05.
Mi proyecto consiste en mandar y recibir un dato entre 0 y 1024 de un arduino a otro con ayuda de un HC-05, este dato será enviado constantemente. Pero no sé si lo estoy haciendo de la forma correcto, porque mi planteamiento es el siguiente:

Código del Emisor:

if(AnularVal>IndiceVal&&AnularVal>PulgarVal&&AnularVal>MedioVal){           
      Funcion = 4;//FUNCION DE GIRO A LA DERECHA
      PWM = ((AnularVal*255)/(AnularMax-AnularMin))+(765);//--intervalo-- 
      byte PWMTm = lowByte(PWM);                                                                
      byte PWMTM = highByte(PWM);                                                                 //Reversa:  
      delay(10);
      mySerial.write(PWMTm);                                                                      
      mySerial.write(PWMTM);                                                                      
    }

Explico: Aquí supuse que no podría mandar un dato con una extención mayor a un byte (Gracias a ChatGPT, que espero no equivocarme), el problema es en el receptor, adjunto el código:
Codigo del receptor:

if(Serial1.available()==2){
    //Se leen los dos bytes recibidos
    byte PWMTm=Serial1.read();//- significativo
    byte PWMTM=Serial1.read();//+ significativo

    //Calcular el número recibido
    int PWMT = (PWMTM << 8)|PWMTm;//Se recorre el bit 8 posiciones y enmascara
    Serial.print(PWMT);
}
if(Serial1.available()>2){
   Serial1.flush();
}

Suponía que vaciaba ahora sí que la memoria donde se acumulan los datos del HC-05 para poder otra vez reconocer los 2 bytes recibidos, cabe aclarar que es un ciclo constante, y no deja de repetirse, pero al final, no vacía el buffer del HC-05, y los datos siguen acumulandose, así que sólo lee el número recibido una vez

Espero puedan ayudarme, soy nuevo en esto y me confunden las funciones del tipo Serial, gracias:)

flush() no vacía el buffer de recepción, lo que hace es esperar que se complete la transferencia de datos salientes, como consecuencia se vacía el buffer de salida.

Para vaciar el buffer de entrada tendrías que leer (y descartar) los datos hasta que available() devuelva 0.

Igual no es la manera correcta de hacerlo porque corres un altísimo riesgo de truncar los datos y obtener valores inesperados.

Hola, ya logré resolverlo, lo que hice fué agregar un identificador antes de leer los datos, en esencia lo que quería hacer era mandar datos de diferentes variables, por eso mandaba entre 0 y 1024 porque supuse que entre ciertos intervalos de trabajo para cada variable bastaría, así que mejor pasé a comunicar valores de 8 bits (de 0 a 255) y antes de leerlos comprobaba un identificador anterior con un "if" una letra por ejemplo para saber a qué variable pertenecía dicho valor, muchas gracias

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.