Comment modifier une variable avec une communication série

Bonjour à tous ,
Débutant dans le codage ( 2 semaines ), je réalise en ce moment mon premier projet qui est une table tournante motorisée , comprenant 6 casiers à 60 degrés.
Par le comptage d’une cellule ,une fois la consigne de nombre atteinte dans un casier , la table s’indexe de 60° pi ainsi de suite.

J’ai réussi à faire un programme qui correspond à ce que je veux et qui fonctionne ,seulement je bute sur la communication série.
Je voudrais pouvoir modifier la consigne de nombre par le moniteur série mais je ne sais pas comment faire.
J’ai regardé les superbes tutos de Eskimon( que je remercie au passage), mais l’épisode sur la communication série ne correspond pas à ce que je souhaite faire.
Quelqu’un pourrait il me donner un exemple de code qui pourrait modifier une variable via le moniteur série ?
Merci d’avance .

Salut,
Moi je l'utilise comme cela :

// contrôle de réception d'une demande d'affichage
while (Serial.available () != 0)
{
  // réception des données
  int reception = Serial.read ();
}

Fait juste gaffe, tu reçois les données en Ascii, 1 vaut 49, 2 vaut 50 ...

Attention mskna17, si tu reçois 2 caractères, le second écrase le premier.

  #define CMD_MAX 5  // à adapter suivant longueur maxi
  static char buf[CMD_MAX];

  if (Serial.available()) {
    memset(buf, 0, CMD_MAX);
    size_t size = Serial.readBytesUntil('\n', buf, CMD_MAX - 1);
    int consigne = atoi(buf);
    // traiter la consigne
  }

La consigne doit être envoyée avec NL ('\n') (voir réglages du moniteur série).

et si vous voulez explorer plus avant comment écouter le port série vous pouvez jeter un oeil à mon petit tuto sur le sujet

(attention dans le code ci dessus atoi() va retourner 0 si vous avez tapé quelque chose qui ne correspond pas à un chiffre. l'usage de strtol() est plus avancé et on peut utiliser endPtr pour savoir si quelque chose a été décodé)

Merci beaucoup à tous pour votre retour.
je vais essayer tout ça et je vous ferez un retour.

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