Bonjour à tous, je me demandais si il existait un code qui aurais pour fonction de “répéter jusqu’à”.
Le code dans lequel je voudrais appliquer cette fonction :
#include <SoftwareSerial.h>
SoftwareSerial HC06(11,10);
const char DOUT_LED = 2;
String messageRecu;
void setup() {
Serial.begin(9600);
HC06.begin(9600);
pinMode(DOUT_LED, OUTPUT);
digitalWrite(DOUT_LED, LOW);
}
void loop()
{
while(HC06.available())
{
delay(3);
char c = HC06.read();
messageRecu += c;
}
if (messageRecu.length() >0)
{
Serial.println(messageRecu);
if (messageRecu == "VNO")
{
messageRecu="";
//répéter jusqu'à ce que le message ne soit pas égale à une lettre
}
messageRecu="";
}
}
Le problème est le suivant : deux messages sont envoyés successivement avec ± 0.2s de décalage. Le premier est “VNO” et le deuxième est un nombre entier compris entre 11 et 149.
Le but est que quand l’Arduino reçois “VNO” elle sait que c’est pour le moteur Z (à terme il y en auras 3 pas visible sur le code pour l’instant). Puis elle reçois le nombre de pas que celui-ci doit faire. Seulement, avec le code ci-dessus, voici ce qui s’affiche dans le moniteur quand j’envoie successivement “VNO” puis “149”
Organise ton code différemment. Par exemple :
Tu initialises 2 variables booléennes à false : VNOrecu, et Pasrecu
Dans ta loop tu fais des tests (voici un pseudocode) :
si pas VNOrecu : tu mets les lignes qui écoutent le HC06 et reçoivent "VNO" et VNOrecu = true
sinon :
si pas Pasrecu : tu écoutes le HC06 jusqu'à recevoir le nombre de pas, et Pasrecu = true
sinon :
tant que le nombre de pas n'est pas atteint : ajouter un pas
J’ai réussi à localisé le problème, il se trouve à l’endroit où la variable “c” passe le relais à la variable “messageRecu2”.
if (VNO == true)
{
messageRecu2 += c;
Serial.println(c);
}
En effet, le message qui est reçus si on prend pour exemple le nombre 90 est “9” puis “0”. J’ai cependant l’impression que cette commande “+=” ne s’applique pas pour les variables INT (que je suis obligé pour commander mon moteur) car au lieux d’afficher 90 elle affiche 799 dans le terminal. Cependant j’ai testé la variable c et elle affiche dans le terminal “9” puis “0”.