Go Down

Topic: Comment séparer les valeurs arrivant du port série (RX pin) (Read 541 times) previous topic - next topic

hddforensic

Bonjour,

Je suis assez nouveau avec Arduino et je n'en suis à mes début avec la programmation.
C'est juste un passe temps et j'ai commencé au mois de juillet alors c'est nouveau.


J'ai créé un project avec un Arduino Mega, sur lequel il y a 2 modules ultrasonique pour mesurer le niveau de l'eau dans deux réservoirs d'eau potable et aussi deux FlowSenor qui mesure le nombre de litre à la minute des conduits qui remplisse les réservoirs.  Ce projet focntionne bien et ce n'est pas la raison primaire de mon message.

Je dois publier la valeurs de mes capteurs sur internet (IO Adafruit)  alors j'ai fait en sorte que les données s'imprime (Serial.print) sur le port série dans un format séparé par des virgules.

,valeur,valeur,valeur,valeur,

Si je vois     ,45,14,85,12,   cela veut dire:

le niveau du réservoire 1 est à 45 centimètres.
le remplissage du réservoir 1 est de 14 litres à la minute.
le niveau du réservoire 2 est à 85 centimètres.
le remplissage du réservoir 2 est de 12 litres à la minute.


Publier sur internet


J'utilise un ESP8266 qui se branche sur mon réseau wi-fi et je résussi a publier la valeur du
DHT22 qui est branché directement sur le 8266 alors je sais que cette portion va bien aussi.


Données du port série du Mega vers le ESP8266

J'ai branché la Pin TX du Mega sur la Pin RX du ESP8266 et je sais que les données se rendent
mais c'est ici que j'ai besoin d'aide.

J'ai fais des recherches mais j'ai surtout trouvé des exemples en anglais et c'est parfois
dificile de suivre en anglais.



Je dois traiter la ligne de texte qui entre par le port série pour attribuer un nom de variable
à chacun dans le but d'envoyer ces valeurs sur un écran LCD.

Quand cette étape va fonctionner, je commencerai à prendre ces valeures pour les envoyer
vers IO Adafruit (un problème à la fois)


Ancien code


Cet été j,ai fait un projet qui envoyait le même format de données vers un LCD sans fil.
J'ai fait ça avec un transmetteur NRF24L01 et j'avais trouvé un code qui traitait bien les
données envoyé exactement dans le même format mais le code est fait pour traiter
les données qui arrivent d'un transmetteur.     if (receive.available())

Dans ce nouveau projet, il faut adapter le code pour quelques chose qui ressemble à

if (serial.available)  etc..  et ça je ne sais pas comment.

voici le code qui s'occupe du "data parsing" avec mon projet de cet été.


Question


Comment puis-je l'adapter pour qu'il traite les données sérial ?

Code: [Select]






String text = " ";//String to hold the text


void loop(){
 
    if (receive.available())                //check when received data available
  {
    char buf[64];
    receive.read(&buf, sizeof(buf));
    text = (char*)buf;
    Serial.println(text);
  }

    if (text.startsWith(",")) {
      int sepLocation[10];
      int index = text.indexOf(",");
      int i = 0;
      String extractedValues[9];
      while (index >= 0) {
        sepLocation[i] = index;
        i++ ;
        index = text.indexOf(",", index + 1);
      }
      for (int o = 0; o < 9; o++) {
        extractedValues[o] = text.substring((sepLocation[o] + 1), sepLocation[(o + 1)]);
      }

             lcd.setCursor(0,0);
             lcd.print (extractedValues[0] + "cm");


             lcd.setCursor(9,0);
             lcd.print (extractedValues[1] + "l/m");
                   

             lcd.setCursor(1,0);
             lcd.print (extractedValues[2] + "cm");


             lcd.setCursor(1,9);
             lcd.print (extractedValues[3] + "l/m");
 
}
}


J'ai publié ma question en anglais sur la partie anglaise du forum mais les seules réponses
sont des liens qui pointent vers des exemples générique en anglais.

J'aimerais mieux trouver quelqu'un qui a le temps de me donner un exemple qui s'applique
directement au code que je présente ici.

 

Merci pour votre aide,

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up