LOCODUINO

Bibliothèque Serial

. Par : Dominique, Guillaume, Jean-Luc

Explications Bibliothèque officielle faisant partie de l’IDE Arduino, elle facilite l’écriture du code pour communiquer avec un autre Arduino ou un ordinateur. Nous allons donc voir les différentes commandes de cette bibliothèque. Nous n’allons pas ici mettre en pratique ces commandes, ce sera le sujet d’autres articles. Installation Cette (…)

Retourner à l'article

Vous répondez à :

Bibliothèque Serial 15 février 2020 16:44, par Jean-Luc

Les broches A6 et A7 sont seulement analogiques (Arduino Nano)

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

15 Messages

  • desactiver la sortie Serial (vers le moniteur) 14 février 2020 16:13, par Francois

    Bonjour
    Votre site est très interessant et m’aide régulièrement !
    Je souhaite en féliciter les créateurs
    Aujourd’hui je souhaite soulever un problème, celui de desactiver de manière pratique la sortie serial.

    En effet je bricole en ce moment sur des sketches un peu lourds, avec tant de complexité que je passe des journées entières à trouver des nouvelles solutions et debugger. Ca me conduit à un gros travail de placement des Serial.print aux endroit opportuns.
    ces remontées d’info serial vers l’ordi sont vraiment précieuses, je ne souhaite pas les enlever car lorsque le robot ne marchera pas bien pour x raison c’est evidemment vers elles que je vais me tourner.

    Evidemment il faut les désactiver pour un usage normal car cela donne enormément de travail à l’arduino, et du temps. et risques de bug et d’erreurs aussi sans doute.

    Jusqu’ici, je plaçais partout des conditions if, avant chaque communication Serial.print , avec la condition sur une pin en PULLUP qu’il suffisait de déconnecter de la masse pour réactiver la sortie vers le moniteur donc.

    Franchement ces conditions font enormément de pollution visuelle dans le sketch. Je me suis demandé si je ne pouvais pas utiliser Serial.end pour carrément couper ce travail là sans utiliser les if.

    donc j’ai Serial.begin(9600) ; en SETUP et au tout debut de void loop() comme cela : if (digitalRead(A7)==0)Serial.end() ;

    eh bien ça ne marche pas du tout ! cela me fait meme un bug general car visiblement ça bloque totalement l’arduino...

    bizarre on dirait que personne ne parle de ce sujet nulle part...
    ....personne n’a ce besoin de desactiver son serial monitor...
    ....personne n’est gêné par le temps perdu des transmissions serial...

    Alors, comment les désactiver proprement sans toutes ces conditions if ? est ce que qq a la réponse ?

    Merci par avance !

    Répondre

    • desactiver la sortie Serial (vers le moniteur) 14 février 2020 17:34, par Jean-Luc

      Bonjour,

      La remarque msport ci-dessous est pertinente et vous ne pouvez donc pas utiliser Serial.end() pour vous débarrasser des impressions.

      Ce que vous pouvez faire c’est définir des fonctions, une par type de donnée que vous afficher :

      void doLog(const char data)
      {
          if (digitalRead(logPin) == LOW) {
              Serial.print(data);
          }
      }
      
      void doLog(const uint32_t data)
      {
          if (digitalRead(logPin) == LOW) {
              Serial.print(data);
          }
      }

      etc pour les autres types de données que vous utilisez sans oublier la variante ln si vous en avez besoin.

      Mais ça ne supprimera pas le code le jour où c’est au point.

      vous pouvez donc définir également une macro :

      #ifdef DEBUG
      #define LOG(data) doLog(data)
      #else
      #define LOG(data)
      #endif

      Que vous pourrez rendre opérante par un :

      #define DEBUG

      Répondre

  • Bibliothèque Serial 14 février 2020 17:12, par msport

    Bonjour,
    je n’ai pas la réponse quant au comment faire (à priori, ce n’est pas la bonne solution).
    Mais l’explication pourquoi ça bloque :
    There is no check if serial is enabled. So all you print() statements will execute. And they will fill the data register and the buffer which is not a problem. UNTIL the buffer is full ! Once the Serial buffer is full the write will wait until there is room in the buffer aka blocking the program. And because the buffer is not emptied the program will hold there...

    Voir en ligne : Serial buffer is full

    Répondre

  • disable Serial 14 février 2020 18:41, par Francois

    Merci msport pour les explications !

    Merci a Jean-Luc pour ta réponse !
    Je viens d’essayer, ça marcherait presque !
    faudrait peut etre trouver une autre type de variable pour stocker les phrases ?

    j’ai fait ça :

    void setup() {
        Serial.begin(9600);
    }
    
    
    void doLog(const char data)
    {
        Serial.println(data);
    }
    
    void loop() {
        Serial.print("x"); delay(400);
        doLog("essai");
        doLog('a');
    }

    ça me donne ça :

    x
    a
    x
    a
    x

    donc le "a" passe, mais "essai" non !

    une idee ?

    Répondre

    • disable Serial 14 février 2020 21:23, par Jean-Luc

      Oui,

      Il faut également un doLog pour les chaines :

      void doLog(const char data[])
      {
          Serial.println(data);
      }

      Et un pour les entiers

      Répondre

  • Bibliothèque Serial 15 février 2020 16:16, par francois

    le coup des crochets, Merci beaucoup !

    Je viens quand même de galerer, j’avais mis un PULLUP sur pin A7 et une condition sur A7, rien ne sortait ! J’ai switché sur la pin digitale 7 et là ça marche !!!

    Merci a vous infiniment, je vais bosser à partir de là !!

    J’ai une cloture electrique a vache devant la maison, j’ai constaté qu’avec juste 20Cm de fil connecté à un driver de moteur pas à pas, il me fait un pas à chaque coup de jus de la clotûre. Je soupçonne la cloture de m’avoir grillé les pins Analogiques de cet arduino, juste en lui mettant 20cm de fil à la patte !

    D’ailleurs je me demande ce qu’on devrait faire des pin non utilisées (non connectées) des arduinos. Il me semble que des connections qu’on ait pu faire dessus peuvent faire buguer un arduino. or elles se reçoivent de l’induction electromagnetique, il n’est pas dit que ces 1 ou 0 non desirés n’aillent pas influer dans les processus en cours dans l’arduino ?? ça me trotte depuis un moment cette idée, et pareil, personne n’en parle...

    Pourtant des bugs avec l’arduino, venant d’on ne sait où, on ne peut pas dire qu’on n’en a pas... mettre des condos 104 ceramique sur toutes les pins ???

    Répondre

  • Bibliothèque Serial 15 février 2020 16:53, par francois

    Ah la vache, vs avez raison !! d’habitude je ne les utilise pas celles là. Avec la A5 ça marche ! Oui, nano, je n’utilise plus que des nano !

    Quel âne ! Je suis depuis une semaine sur ce soft, tous les jours du matin jusqu’à 3h dans la nuit, je dois être usé.

    Merci vraiment, les gars

    Répondre

  • Bibliothèque Serial 15 février 2020 17:54, par msport

    En parlant de crochets, on pense aux accolades qui disparaissent ...
    Quel code pour insérer du code dans les messages du site éditorial ?
    Il n’est pas permis d’insérer des images ni d’utiliser les attributs html class

    Répondre

  • Bibliothèque Serial 15 février 2020 19:59, par Jean-Luc

    Ça ressemble au html. Il faut utiliser la balise <code>. On ferme comme en html en mettant un / devant. On peut ajouter comme attribut <code class="arduino"> pour avoir la coloration syntaxique et ajouter <code class="arduino sans_telechargement"> pour supprimer le bouton.

    Répondre

  • Bibliothèque Serial et module Bluetooth BK8000L 26 mars 2020 16:00, par Nicolas

    Bonjour à tous, et d’abord merci pour ce site très intéressant !

    Rien à voir avec le ferroviaire, mais j’espère que vous voudrez bien m’aider ;-)

    J’essaye de communiquer en série avec un module bluetooth. J’ai la liste des commandes AT qu’il est supposé comprendre, mais il semble ne pas les comprendre. Une question me hante : les information qui s’affichent sur le moniteur série de l’IDE arduino sont elles également envoyées sur les sorties 0 et 1 de la carte ?
    Au voltmètre, je vois bien quelque chose passer (baisse de tension) sur l’entée du module à chaque trame AT.

    Merci pour votre aide !
    Amicalement,
    Nicolas

    Répondre

  • Bibliothèque Serial 26 mars 2020 20:40, par msport

    Question 1 : Yes.
    Pas de fantôme sur TX/RX, vérifiez que les paramètres du port serial sont ceux du module bluetooth : la vitesse en particulier.
    Voir la doc et la démo :
    https://www.mikrocontroller.net/att...
    On trouvera peut être une application pour les annonces dans les gares ...

    Voir en ligne : Demo

    Répondre

  • Bibliothèque Serial 27 mars 2020 18:13, par Nicolas

    Merci beaucoup msport pour la réponse.
    J’ai déjà lus les liens que tu m’as indiqué, je pense être dans le bon... Mais peut-être est-ce mon module qui est HS ou paramétré différemment...puisqu’il a l’air d’être I2C... je m’y pencherai plus tard.
    En attendant je commande les fonctions du module par les sorties de l’arduino. C’est plus long, ça utilise plus de sorties et de code...
    Tant pis, pour l’instant il m’en reste encore de disponible.

    Encore merci et peut être à bientôt sur les rails !
    Bon confinement,
    Nicolas

    Répondre

  • Bibliothèque Serial 27 mars 2020 22:43, par msport

    * Note that the baud rate, 9600, N, 8,1 ; dixit la doc.

    on lit (mal) dans la doc p2 (schéma bloc) que RX/TX seraient 11 et 10 et sur le schéma p3 "serial port" 13 et 14.
    Probablement référence 1) au connecteur et 2) au socket.

    A tester avec un émulateur de terminal comme hyper terminal ou YAT ou autre et un convertisseur genre FTDI. (RX -> TX et TX -> RX)

    ça ressemble à l’ESP32 auquel on s’intéresse actuellement.

    Répondre

  • Bibliothèque Serial 14 août 2021 17:39, par martin

    Bonjour, merci pour le detail de la bibliothèque Serial. Cependant pour un exercice on me demande de ne pas utiliser la bibliotheque Serial mais des fonctions de plus bas niveau. Sauriez vous ou je peux trouver les codes sources de Serial. Comment faisait on avant l’utilisation de la bibliotheque ? merci.

    Répondre

Rubrique Bibliothèques

Les derniers articles

Les articles les plus lus