HOWTO · Arduino

Comment imprimer sur la console en Arduino

Ce didacticiel traitera de l'impression de texte ou de variables sur la console à l'aide du moniteur série de l'IDE Arduino.

Sur cette page

La console, souvent appelée moniteur série, sert de fenêtre virtuelle sur le fonctionnement de votre Arduino.

Elle vous permet d’envoyer des informations de votre microcontrôleur vers votre ordinateur et de recevoir des données en retour. Cette communication bidirectionnelle est un outil puissant pour les débutants comme pour les passionnés d’Arduino expérimentés.

Ce didacticiel traitera de l’impression de texte ou de variables sur la console à l’aide du moniteur série de l’IDE Arduino. En commençant par les bases de l’utilisation de Serial.print() et Serial.println(), nous progresserons vers des stratégies plus avancées comme l’utilisation de Serial.write() pour la transmission de données binaires.

Imprimer sur la console à l’aide du moniteur série en Arduino

L’IDE Arduino dispose d’une console en bas, mais nous ne pouvons rien y imprimer. La console sert uniquement à afficher les informations lors de la vérification et de la compilation du code.

La console affiche l’utilisation de la mémoire par le code en octets ainsi que les erreurs lors de la vérification ou du téléversement du code. Pour imprimer ou afficher la valeur stockée dans une variable, nous pouvons utiliser le moniteur série de l’IDE Arduino.

Le moniteur série est un outil intégré à l’IDE Arduino qui vous permet de communiquer avec votre carte Arduino. Il offre un moyen pratique d’envoyer des données de votre Arduino vers votre ordinateur et de recevoir des données de votre ordinateur vers votre Arduino.

Nous pouvons lancer le moniteur série à l’aide de l’onglet Tools dans la barre d’outils de l’IDE Arduino.

serial monitor in tools tab

Note
Nous ne pouvons exécuter le moniteur série que lorsque la carte Arduino est connectée à l’IDE Arduino.

Utiliser les fonctions Serial.print() et Serial.println() sur le moniteur série

Nous pouvons utiliser la fonction Serial.begin() pour démarrer la communication série avec un débit en bauds ou une vitesse spécifique. Nous pouvons utiliser les fonctions Serial.print() et Serial.println() pour imprimer du texte et des variables sur le moniteur série.

Syntaxe de Serial.print() et Serial.println() :

Serial.print(data);
Serial.println(data);

Paramètres :

  • data : Les données que vous souhaitez envoyer au port série. Elles peuvent être de différents types, notamment des entiers, des flottants, des caractères et des chaînes.

Paramètres supplémentaires (facultatifs) :

  • format : Ce paramètre vous permet de spécifier le format dans lequel imprimer les données. Il peut s’agir de l’un des éléments suivants :
    1. DEC : Imprimer sous forme de nombre décimal.
    2. BIN : Imprimer sous forme de nombre binaire.
    3. OCT : Imprimer sous forme de nombre octal.
    4. HEX : Imprimer sous forme de nombre hexadécimal.

La différence entre Serial.print() et Serial.println() est que la fonction print() imprimera la variable et que le curseur restera sur la même ligne, tandis que dans la fonction println(), le curseur passe à la ligne suivante après l’impression de la variable.

Par exemple, nous voulons imprimer deux variables sur la même ligne et la troisième variable sur la ligne suivante. Dans ce cas, nous utiliserons la fonction print() pour imprimer la première variable, puis la fonction println() pour imprimer la deuxième variable et déplacer le curseur vers la ligne suivante, puis nous utiliserons à nouveau la fonction print() pour imprimer la troisième variable.

Définissons quelques variables et imprimons-les sur le moniteur série. Voir le code ci-dessous.

Exemple :

int My_Int = 10;
unsigned long My_TimeStamp = 1416803716;
const char *My_CharArray = {"This is My_CharArray"};
float My_Float = 3.14159266759;

void setup() {
  Serial.begin(9600);
  Serial.println(My_Int);
  Serial.println(My_TimeStamp);
  Serial.println(My_CharArray);
  Serial.print(My_Float, 5);  // prints to five places right of the decimal
}
void loop() {
  // put your code here to run repeatedly
}

Ce code commence par déclarer plusieurs variables de différents types de données. Dans setup(), la communication série est configurée à un débit de 9600 bauds. Il imprime ensuite les valeurs des variables à l’aide de Serial.print() et Serial.println().

Si nous voulons imprimer les variables une seule fois sur le moniteur série, nous pouvons utiliser la fonction Serial.print() à l’intérieur de la fonction setup(), car elle ne s’exécute qu’une seule fois lorsque la carte Arduino est mise sous tension.

Si nous voulons imprimer une variable en continu, nous devons l’imprimer à l’intérieur de la fonction loop(), car le code qu’elle contient s’exécute en boucle tant que l’Arduino est sous tension. Nous pouvons imprimer des variables de tous les types de données à l’aide du moniteur série.

Sortie :

10
1416803716
This is My_CharArray
3.14159

Nous pouvons également définir le deuxième argument dans la fonction Serial.print() (comme dans l’exemple de code ci-dessus), qui est le format d’impression de la valeur de la variable.

Par exemple, dans le cas d’un type de données entier ou long, nous pouvons définir le système de numération dans lequel nous voulons afficher la valeur, comme BIN pour binaire et DEC pour décimal. Par défaut, le nombre sera affiché dans le système de numération décimal.

Dans le cas d’un nombre à virgule flottante, nous pouvons définir le nombre de décimales du nombre que nous voulons imprimer sur le moniteur série. Consultez ce lien pour plus de détails sur la fonction Serial.print().

Utiliser la fonction Serial.write() pour envoyer des données binaires au moniteur série

Les données à l’intérieur de la fonction Serial.print() seront converties en représentation ASCII. Si nous voulons envoyer les données sous forme de flux d’octets, nous pouvons utiliser la fonction Serial.write() à la place de la fonction Serial.print().

En programmation Arduino, la fonction Serial.write() est utilisée pour envoyer des données binaires via la connexion série. Elle vous permet d’envoyer un octet ou une série d’octets directement et sans interprétation.

C’est particulièrement utile lorsque vous devez transmettre des données brutes ou des codes de contrôle.

Syntaxe :

Serial.write(data);

Paramètres :

  • data : L’octet ou le tableau de données que vous souhaitez envoyer via la connexion série. Il peut s’agir d’un seul octet (char non signé) ou d’un tableau d’octets.

Paramètres supplémentaires (facultatifs) :

  • length : Le nombre d’octets à envoyer depuis le tableau. Ce paramètre est utilisé lors de l’envoi d’un tableau de données.

Serial.write() permet d’envoyer des données binaires à la console. C’est utile lorsque vous travaillez avec des données non textuelles ou que vous communiquez avec d’autres appareils nécessitant une communication binaire.

Exemple :

void loop() {
  byte data[] = {0x48, 0x65, 0x6C, 0x6C, 0x6F};  // ASCII values of "Hello"
  Serial.write(data, sizeof(data));
  delay(1000);
}

Ce code envoie les valeurs ASCII de 'H', 'e', 'l', 'l' et 'o' au moniteur série l’une après l’autre, avec un délai de 1 seconde entre chaque transmission. Lorsque vous exécutez ce code et ouvrez le moniteur série, "Hello" apparaît dans la console.

Conclusion

En conclusion, imprimer sur la console revient à manier un puissant outil de débogage et de surveillance. À travers ce guide, nous avons exploré diverses méthodes utilisant le moniteur série, des fonctions fondamentales Serial.print() et Serial.println() aux stratégies avancées comme la transmission de données binaires avec Serial.write().

Vous pouvez communiquer de manière transparente entre votre Arduino et votre ordinateur en comprenant et en utilisant efficacement ces techniques. Cela ouvre des possibilités, de la surveillance en temps réel des données de capteurs au dépannage d’une logique de code complexe.