Préparateur de biberon avec commande bluetooth

Bonjour à tous ,

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.

Merci pour votre aide

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone".

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:
image
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();

ce n'est pas essayé en "vrai".

Info sur readStringUntil et trim()

Prochaine étape pour une application plus "classe" côté smartphone, MIT App Inventor

A+
Cordialement
jpbbricole

1 Like

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

merci beaucoup cela fonctionne parfaitement.

Bonsoir xaviergda

Super!

Je te prépare un exemple pour MAI et la sélection du Bluetooth.

A+
Cordialement
jpbbricole

Bonsoir xaviergda

Voilà un exemple de connexion à Bluetooth:


et le fichier AIA:
BT_select.zip (3.1 KB)

Bonne soirée
jpbbricole

1 Like

whaw je n'en aurais jamais demandé autant, merci infiniement je vais tester ça ; )

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