Fonctions de la communication série

Ces fonctions sont indispensables pour la communication entre la plaque Arduino et un ordinateur ou un autre dispositif. Les cartes peuvent se communiquer par le biais des pins digitaux RX (0) et TX (1), ou bien via connexion USB. Il faut savoir que si on utilise les fonctions de communication série, on ne pourra pas utiliser les pin 0 et 1 comme entrées et sorties numériques.

Pins digitaux de la plaque Arduino RX (0) et TX (1).
Pins digitaux TX et RX

On peut utiliser le moniteur de port série incorporé dans le programme d’Arduino pour nous communiquer avec la carte. Cliquez sur le bouton du moniteur de port série sur la barre à outils et sélectionnez la même vitesse utilisée dans l’appelle à Serial.begin()

Serial.begin()

Cette tâche sert à établir la vitesse de transmission de données en bits par secondes (baud) pour le transfert des données série. Pour se communiquer avec l’ordinateur on utilise normalement 9600 baud. L’exécution de cette fonction se réalise avant toute transmission étant donné qu’ elle ouvre le canal série pour que la communication puisse s’engager et elle s’inscrit, parlant de codification, dans la section void setup().

Syntaxe

Serial.begin(vitesse)

Serial.begin(vitesse, config)

Exemple

void setup() {
  Serial.begin (9600); // ouvre le port série et établit la vitesse des données à 9600 baud
}
void loop() {}

Serial.end()

Cette fonction désactive la communication série, permettant aux pins 0 (RX) et 1 (TX) d’être réutilisées comme sorties et entrées numériques. Pour rétablir la communication on doit faire appelle à Serial.begin().

La fonction Serial.end() ne présente aucun paramètre.

Syntaxe

Serial.end()

Serial.print()

Ce mandat envoie à travers du canal série une donnée du microcontrôleur vers l’extérieur. Cette donnée peut être un caractère, une chaîne, un nombre entier, un nombre décimal (deux décimaux par défaut)…

Syntaxe

Serial.print(valeur)

Serial.print(valeur, format)

On observe deux paramètres:

  • valeur -> c’est la valeur à imprimer (n’importe quelle donnée)
  • format -> sert à spécifier la base numérique (pour le données genre int) ou le nombre de décimaux (pour les données genre float)

Exemple

void setup() {
  Serial.begin(9600);
}
void loop() {
  // print labels
  Serial.print("NO FORMAT");  // imprime une étiquette
  Serial.print("\t");         // retour à la ligne

  Serial.print("DEC");
  Serial.print("\t");

  Serial.print("HEX");
  Serial.print("\t");

  Serial.print("OCT");
  Serial.print("\t");

  Serial.print("BIN");
  Serial.println();        // retour à la ligne lors de la dernière étiquette

  for (int x = 0; x < 64; x++) { 
    // Différents formats d'impression:
    Serial.print(x);       // ASCII-encoded decimal - ègal à "DEC"
    Serial.print("\t\t");  // imprime 2 tabulations

    Serial.print(x, DEC);  // ASCII-encoded decimal
    Serial.print("\t");    // imprime 1 tabulation

    Serial.print(x, HEX);  // ASCII-encoded hexadecimal
    Serial.print("\t");    // imprime 1 tabulation

    Serial.print(x, OCT);  // ASCII-encoded octal
    Serial.print("\t");    // imprime 1 tabulation

    Serial.println(x, BIN);  // ASCII-encoded binary
    // ajoute un retour à la ligne avec "println"
    delay(200);            // pause de 200 millisecondes
  }
  Serial.println();        // ajoute un nouveau retour à la ligne
}

Serial.println()

Cette fonction réalise le même mandat que Serial.print(), mais en plus, rajoute automatiquement à la fin des données envoyés, deux caractères extra: le retour automatique (Code ASCII 13) et nouvelle ligne (code ASCII 10).

Syntaxe

Serial.println(valeur)

Serial.println(valeur, format)

On observe deux paramètres:

  • valeur -> c’est la valeur à imprimer (n’importe quelle donnée)
  • format -> sert à spécifier la base numérique( int) ou le nombre de décimaux (float).

Serial.parseInt()

Cette fonction lit et élimine du buffer d’entrée les données jusqu’à ce quelle trouve un nombre entier. La valeur retournée sera alors ce nombre entier.

Syntaxe

Serial.parseInt()

Exemple

void loop(){
  int x;
  if (Serial.available() > 0){
     x = Serial.parseInt();
     Serial.println(x) ;
  }
}

Ce code reçoit et enregistre comme x simplement les données que seront tapées et confirmées avec intro comme entiers. Le reste sera considéré comme zéro.