Arduino et réception sur smartphone via Bluetooth

Eversman
ven, 01/22/2016 - 13:02
Bonjour à tous !
Je n'ai pas trouvé de réponse à ma question sur le forum (ou alors je suis passé a coté si elle éxiste).
Je rencontre un probleme qui me rend fou car je ne comprends pas pourquoi ca ne marche pas !
Concrètement, j'essaye d'envoyer sur mon smartphone la valeur d'un potar. Mais le résultat reçu sur la tablette est vraiment louche :
Encadré en rouge j'ai bien la valeur du potar (j ai la meme dans le moniteur série), mais je comprends pas les valeurs avant et apres :-/
Sur App inventor j ai ca pour le text label :
et voici mon code :
#include <SoftwareSerial.h>
int TX = 5;
int RX = 3;
float valeurAnalog = 0;
SoftwareSerial bluetooth(RX,TX);void setup() {
pinMode(TX, OUTPUT);
pinMode(RX, INPUT);
Serial.begin(9600);
bluetooth.begin(9600);
}void loop() {
valeurAnalog = analogRead(A0);
Serial.println(valeurAnalog);
//Serial.println(String(valeurAnalog));
bluetooth.print(valeurAnalog);
delay(500);
}
Merci pour votre aide !
Cordialement
Alexandre
Alex
ven, 01/22/2016 - 13:16
Bonjour Alex,
C'est un problème qui en a rendu fou plus d'un...
Pour envoyer des données de l'Arduino au Smartphone, il faut que tu saches avec exactitude le nombre de bytes que tu envoies. Il faut alors que App Inventor saches exactement le nombre de bytes qu'il reçoit à chaque fois. Sinon tu surcharges le buffer et tu te trouves avec plusieurs valeurs dans le messages du type 0.52310.563 etc...
Si tu regardes mon code et mon App de ma vidéo sur l'Andruino, tu devrais trouver la solution à ton problème lorsque j'envoie la valeur des entrées Analog.
A plus
Eversman
ven, 01/22/2016 - 13:26
Merci pour cette réponse tres rapide !! Je vais aller la revoir et sachant le probleme essayer de trouver la solution !! Merci encore !!
Eversman
ven, 01/22/2016 - 13:55
Re, alors ca ne marche toujours pas, suite a tes infos et ton tuto j ai modifié mon application:
J'ai mis 10 en nombre de bytes car on envoie une valeur qui va de 0 a 1023 donc il nous faut 10 bits, c'est bien le résonnement à éffectuer ?
Merci pour ton aide et ton temps !
Alex
ven, 01/22/2016 - 14:19
Non, tu confonds bits et bytes. Si tu envoies 1023 ou 1.02 ou 10.2 alors il te faut 4 Bytes car il y a 4 cactères (le . est considéré comme un Byte). C'est un peu compliqué mais fais des tests avec numberOfBytes = 1 2 3 4 et 5 et tu devrais y voir plus clair.
Eversman
ven, 01/22/2016 - 15:24
D accord !! merci pour ton aide j'ai compris ! Mais je me pose une autre question, mon potar va de 0 a 1023 donc de 1 Bytes a 4 Bytes, comment peut ton régler ce probleme ? Faudrait il que je fasse des conditions dans le code de l arduino et que je rajoute des 0 en fonction de la taille du nombre ?
Eversman
ven, 01/22/2016 - 15:38
J ai éssayé en analysant la taille du string puis en concaténant plus ou moins de 0 devant suivant la taille, ca fonctionne mais ca me parait un peu "bricolage" xD Je ne sais pas si il y a plus simple :s
Alex
dim, 01/24/2016 - 15:19
Et bien pourtant c'est meilleure méthode! :)