Bluetooth HC-05: un tuto qui marche

En ce qui me concerne pour transmettre un nombre de 10 bits (résultat de conversion A/D mis dans une association de 2 bytes); j'utilise le concept suivant :

  • Les 10 bits de la conversion A/D sont coupés en deux (2 fois 5 bits mis dans deux bytes; il reste 3 bits vacants par byte)
  • L'un des bits vacants sert à coder une indication de poids : par ex 0 c'est le byte de poids faible, 1 c'est le byte de poids fort)
  • les deux autres bits vacants servent à identifier 4 variables possibles.

La fonction CODAGE reçoit l'int para et le byte numero. (numero est le n° attribué à la variable transmise)
Le procédé consiste à décaler les bits "utiles" et à masquer le résultat avec le n° de variable et le bit de poids
La fonction ENVOIE_VARIABLE envoie sur la ligne série la variable numéro numerovar et de valeur numérique Valeur par SoftwareSerial (BTserial.write) ou éventuellement par Serial (Serial.write)

CodeBas et CodeHaut sont des variable globales de type byte

 void CODAGE(int param, byte numero)
{ numero=(numero<<6);
  CodeBas=((lowByte(param))&0x1F)|numero;       // nn0X XXXX
  CodeHaut=((lowByte(param>>5))|0x20)|numero;   // nn1Y YYYY
}

 void ENVOIE_VARIABLE(int Valeur, byte numerovar)
  {if (Valeur<0) Valeur=0;CODAGE(Valeur,numerovar);
   //Serial.write(CodeBas);  Serial.write(CodeHaut);
   BTserial.write(CodeBas);  BTserial.write(CodeHaut);
   delay(2);
  }

Serge .D