j'utilise l'application Serial Bluetooth terminal. pour envoyer un nombre à mon arduino équipé d'un module HC-06
Je souhaite envoyer une valeur numérique de 1 à 10 000 mais lorsque je demande à l'Arduino de me renvoyer la valeur sur le terminal il me répond des valeurs étranges et execute plusieurs fois la boucle la boucle sans que je lui demande.
J'ai une intuition me je ne sais pas trop quoi en faire, losque j'envoie 1 il me renvoie 49 ce qui correspond au code ascii mais lorsque j'envois 10 il me réponde la meme chose. plus le nombre que je rentre est grand, plus il exécute la boucle de nombreuse fois.
Question:
1/ comment je peux réaliser la conversion ascii( je crois que c'est cela ) pour que lorsque je tape 10 il me renvoie 10, 20 me renvoie 20 etc...
2/ Pour quelle raison et comment éviter que le programme tourne plusieurs fois ?
le programme actuel est le suivant:
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(2, 3); // Utilisez les broches appropriées pour votre module HC-06
void setup() {
bluetooth.begin(9600); // Démarre la communication série avec le module Bluetooth
}
void loop() {
if (bluetooth.available()) {
char receivedChar = (char)bluetooth.read(); // Lit le caractère entrant du module Bluetooth
bluetooth.println("Valeur recu");
bluetooth.println(receivedChar);
delay(500);
int receivedValue = receivedChar - '0';
bluetooth.println(receivedValue);
delay(500);
receivedChar = "";
receivedValue = "";
}
}
Je vous met en pièce jointe le screen shot des résultats pour la valeur de 10.
Si vous voulez comprendre comment bien écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez jeter un oeil à mon petit tuto sur le sujet
Le fait que tu aies 49 pour 1 sur SBT, (comme tu l'as dit, c'est le code ASCII de la "lettre" 1). provient du fait que tu lis char receivedChar = (char)bluetooth.read(); et que à cet instant 1 reçu vaut 49 en décimal, 49 qui est renvoyé en écho à SBT.
Pour simplifier l'envoi de tes valeurs ou autres commandes, il est préférable d'envoyer, depuis SBT, une chaîne de caractères terminée par la fin de ligne:
Ainsi, côté réception, tu lis la chaîne envoyée depuis SBT par
String receivedCommand = bluetooth.readStringUntil('\n'); // Lit les caractère entrant du module Bluetooth
receivedCommand.trim(); // Pour nettoyer la chaîne reçue
int valeurCommande = receivedCommand.toInt();
Bonjour merci pour ce tuto, il est très très instructif, je suis encore un peu débutant donc il me reste encore beaucoup de chose à apprendre pour tout comprendre mais je vais y arriver. merci beaucoup
Bonjour,
Merci beaucoup pour ce retour je vais le tester de suite. à ce jour j'utilise SBT pour tester mon programme Arduino et c'est avec lui que j'ai réussis à me connecté au module Bluetooth HC-06
Je suis en cours de création d'une app avec MIT App inventor mais un un pb car lorsque je veux afficher les réseaux bluetooth il ne m'affiche rien donc pour l'instant je regarde avec SBT afin d'apprendre avec la base et j'apprend beaucoup de choses. merci pour votre aide