Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

Serial.print(données)


Description

Affiche les données sur le port série.

Affiche les données sous le port série sous forme lisible pour les humains (texte ASCII). Cette instruction peut prendre plusieurs formes.

  • Les nombres entiers sont affichés en utilisant les caractères ASCII pour chaque chiffre.
  • Les nombres à virgules (float) sont affichés de la même façon sous forme de caractères ASCII pour chaque chiffre, par défaut avec 2 décimales derrière la virgule.
  • Les valeurs de type byte sont affichés sous la forme d'un caractère ASCII.
  • Les caractères et les chaînes sont affichés tels que.

Par exemple :


Serial.print(78); // affiche "78"
Serial.print(1.23456); // affiche "1.23"
Serial.print(byte(78)); // affiche "N" (dont la valeur ASCII est 78)
Serial.print('N'); // affiche "N"
Serial.print("Hello world."); // affiche "Hello world."
 

Un second paramètre optionnel (format) spécifie :

  • pour les nombres entiers, la base à utiliser. Les valeurs autorisées sont BYTE, BIN (binaire, ou base 2), OCT (octal, ou base 8), DEC (décimal, ou base 10), HEX (hexadécimal, ou base 16),
  • pour les nombres à virgules (float), le paramètre précise le nombre de décimales après la virgule à utiliser.

Par exemple :


Serial.print(78, BYTE); // affiche "N"
Serial.print(78, BIN) ; // affiche  "1001110"
Serial.print(78, OCT); // affiche "116"
Serial.print(78, DEC); // affiche "78"
Serial.print(78, HEX); // affiche "4E"
Serial.print(1.23456, 0); // affiche "1"
Serial.print(1.23456, 2); // affiche "1.23"
Serial.print(1.23456, 4); // affiche "1.2346"
 

Syntaxe de base


Serial.print(val)
Serial.print(val, format)
 

Paramètre de base

  • val: la valeur à afficher. N'importe quel type de données.
  • format : spécifie la base utilisée(pour les nombres entiers) ou le nombre de décimales (pour les nombres de type float)

Valeur renvoyée

Aucune


Syntaxe détaillée

Cette commande peut prendre de nombreuses formes :

Serial.print(b) avec aucun format spécifié, affiche b en tant que nombre decimal sous la forme d'une chaîne de caractère ASCII. Par exemple,

int b = 79;
Serial.print(b);

affiche la chaîne de caractère "79".

Serial.print(b, DEC) affiche b en tant que nombre décimal sous la forme d'une chaine de caractères ASCII. Par exemple :

int b = 79;
Serial.print(b, DEC);

affiche la chaîne de caractères "79".

Serial.print(b, HEX) affiche b en tant que nombre hexadécimal sous la forme d'une chaîne de caractère ASCII. Par exemple :

int b = 79;
Serial.print(b, HEX);

affiche la chaîne de caractères "4F".

Serial.print(b, OCT) affiche b en tant que nombre octal sous la forme d'une chaîne de caractère ASCII. Par exemple :

int b = 79;
Serial.print(b, OCT);

affiche la chaîne de caractères "117".

Serial.print(b, BIN) affiche b en tant que nombre binairesous la forme d'une chaîne de caractère ASCII. Par exemple :

int b = 79;
Serial.print(b, BIN);

affiche la chaîne de caractères "1001111".

Serial.print(b, BYTE) affiche b en tant que simple octet, ce qui est interprété comme un caractère ASCII. Par exemple :

int b = 79;
Serial.print(b, BYTE);

renvoie le caractère "O", ce caractère ASCII étant représenté par la valeur 79. Pour plus d'informations, voir le Code ASCII.

Serial.print(str) si str est une chaîne ou un tableau de variables char, affiche str sous la forme d'une chaîne de caractère ASCII. Par exemple :

Serial.print("Hello World!");

affiche la chaîne de caractère "Hello World!".

Paramètres détaillés

  • b: l'octet à afficher, ou
  • str: la chaîne à afficher

Exemple


/*
Utilise une boucle FOR pour afficher un nombre dans des formats variés
*/


int x = 0;    // variable

void setup() {
  Serial.begin(9600);      // ouvre le port série à 9600 bauds
}

void loop() {  
  // affiche une entête de présentation en colonnes
  Serial.print("SANS FORMAT");       // affiche le texte
  Serial.print("\t");              // affiche un tab

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

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

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

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

  Serial.println("BYTE"); // affiche le texte suivi d'un saut de ligne

  for(x=0; x< 64; x++){    // affiche une partie de la table ASCII

    // affichage sous différents formats
    Serial.print(x);       // affiche un decimal en chaîne ASCII- comme "DEC"
    Serial.print("\t");    // affiche un tab

    Serial.print(x, DEC);  // affiche un décimal en chaîne ASCII
    Serial.print("\t");    // affiche un tab

    Serial.print(x, HEX);  // affiche un hexadecimal en chaîne ASCII    
    Serial.print("\t");    // affiche un tab

    Serial.print(x, OCT);  // affiche un octal en chaîne ASCII
    Serial.print("\t");    // affiche un tab

    Serial.print(x, BIN);  // affiche un binaire en chaîne ASCII
    Serial.print("\t");    // affiche un tab

    Serial.println(x, BYTE);    // affiche un octet,
    //                             et ajoute le retour du chariot avec "println"
    delay(200);            // pause de 200 millisecondes
  }
  Serial.println("");      // affiche un autre retour de chariot
}
 

Conseils de programmation / problèmes connus

Attention si vous faites des opérations mathématiques dans les parenthèses, par exemple :

Serial.print(x-2, DEC);

Le type de donnée unsigned et le type de donnée byte donneront des résultats incorrects et laisser à penser qu'ils sont de type signé (tel que le type de donnée char).

La fonction Serial.print met les données dans le buffer série. Il faut attendre qu'un caractère soit émis avant d'envoyer le caractère suivant. Sinon la fonction recommence avant d'envoyer le dernier caractère.

Commentaires utilisateurs

  • Pour afficher des caractères spéciaux, utiliser une instruction de la forme : Serial.print(byte(78)); // affiche "N" (dont la valeur ASCII est 78)
  • Voici quelques valeurs ASCII utiles : 130 pour é, 34 pour "
  • Ainsi, pour afficher : un "mot" on fera Serial.print("un "), Serial.print (byte(34)), Serial.print("mot"), Serial.print (byte(34));
  • On peut aussi utiliser le \" pour afficher un " dans la chaîne. Ainsi, Serial.print("\"mot\"") affichera "mot"... Très pratique.
  • Un problème majeur que l'on va rencontrer avec les chaînes de caractères, c'est l'utilisation de la RAM qui va rapidement saturer (2K pour une UNO contre 32K de mémoire programme) et donner des comportements inattendus. Pour contourner le problème :

Voir également


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.