Logo Mon Club Elec

Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

Lorsque vous travaillez avec des systèmes embarqués, il est souvent nécessaire de recevoir des données saisies par l’utilisateur. Une méthode courante consiste à utiliser une fenêtre de terminal série pour recevoir des valeurs numériques entières. Dans cet article, nous allons examiner comment recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série. Nous verrons comment configurer le terminal série, comment lire les données saisies et comment traiter ces données.

Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

1.  Présentation

Ce programme reçoit sur le port série
une valeur numérique entière saisie dans le fenêtre Terminal du logiciel Arduino
et renvoie cette valeur sur le port Série pour affichage dans la fenêtre Terminal

Ce programme utilise les fonctionnalités suivantes :

  • Utilise la connexion série vers le PC

Ressources utiles associées à ce programme :

  • La librairie Serial – pour les communications séries entre la carte Arduino et l’ordinateur ou d’autres composants

2.  Matériel Nécessaire

2.1  L’espace de développement Arduino

  • … pour éditer, compiler le programme et programmer la carte Arduino.
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

2.2  Le matériel suivant pour réaliser le montage associé

  • une plaque d’essai pour montage sans soudures,
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série
  • des straps,
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

3.  Instructions de montage

  • La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)

4.  Le schéma théorique du montage

Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

Le schéma théorique du montage (cliquer pour agrandir)

5.  Le circuit du montage

Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

Le schéma du montage à réaliser (cliquer pour agrandir)

6.  Explication du programme

  • Ce programme repose sur une fonction dédiée pour lire un nombre entier reçu sur le port série en prenant en compte le signe négatif. Le nombre renvoyé est une variable de type long.
  • Lorsqu’un nombre est recu, le résultat est affiché dans la fenêtre Terminal
  • Pour plus détails, voir les commentaires du programme.

7.  Mise en oeuvre du programme

7.1  Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d’expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

7.2  Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l’IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série
  • La fenêtre « Terminal » s’ouvre alors :
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

7.3  Fonctionnement

  • On commence par saisir au clavier du PC la valeur souhaitée et « clic » sur <send> pour envoyer la valeur à la carte Arduino.
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série
  • La valeur saisie est réaffichée dans la fenêtre Terminal, attestant que la carte Arduino a bien pris en compte la valeur saisie :
Recevoir une valeur numérique entière saisie dans la fenêtre du Terminal Série

8.  Le programme complet en langage Arduino

A copier/coller directement dans l’éditeur Arduino

// — Programme Arduino —
// Trame de code générée par le générateur de code Arduino
// du site www.mon-club-elec.fr

// Auteur du Programme : X. HINAULT – Tous droits réservés
// Programme écrit le : 4/2/2011.

// ——- Licence du code de ce programme —–
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License,
//  or any later version.
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.

// ////////////////////  PRESENTATION DU PROGRAMME ////////////////////

// ——– Que fait ce programme ? ———
 /* Ce programme reçoit sur le port série
une valeur numérique entière saisie dans le fenêtre Terminal du logiciel Arduino
et renvoie cette valeur sur le port Série pour affichage dans la fenêtre Terminal */

// — Fonctionnalités utilisées —

// Utilise la connexion série vers le PC

// ——– Circuit à réaliser ———

// La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)

// /////////////////////////////// 1. Entête déclarative ///////////////////////
// A ce niveau sont déclarées les librairies incluses, les constantes, les variables, les objets utiles…

// — Déclaration des constantes —

// — Inclusion des librairies —

// — Déclaration des constantes utiles —

// — Déclaration des constantes des broches E/S numériques —

// — Déclaration des constantes des broches analogiques —

// — Déclaration des variables globales —

 int octetReception=0; // variable de stockage des valeurs reçues sur le port Série
 long nombreReception=0; // variable pour nombre reçu sur port Série

// — Déclaration des objets utiles pour les fonctionnalités utilisées —

// ////////////////////////// 2. FONCTION SETUP = Code d’initialisation //////////////////////////
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// — ici instructions à exécuter 1 seule fois au démarrage du programme —

// ——- Initialisation fonctionnalités utilisées ——-  

Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission

// ——- Broches en sorties numériques ——-  

// ——- Broches en entrées numériques ——-  

// ——- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ——-  

// ——- Initialisation des variables utilisées ——-  

} // fin de la fonction setup()
// ********************************************************************************

////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme //////////////////
// la fonction loop() s’exécute sans fin en boucle aussi longtemps que l’Arduino est sous tension

void loop(){ // debut de la fonction loop()

// — ici instructions à exécuter par le programme principal —

//—- code type réception valeur sur le port série —

  nombreReception=recevoirNombre(); // appel de la fonction recevoirNombre

if (nombreReception!=0) { // si un nombre a été reçu

  //— affiche le nombre reçu sur le port série
  Serial.print(« Nombre recu = »);
  Serial.println (nombreReception);

  nombreReception=0; // RAZ nombre reçu

}

} // fin de la fonction loop() – le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

// ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS ////////////////////

// ////////////////////////// AUTRES FONCTIONS DU PROGRAMME ////////////////////

long recevoirNombre() { // fonction de reception d’un nombre sur le port série

  int octetRecu=0; // variable pour octet recu
  int compt=0; // variable locale comptage caractères reçus
  boolean signe=true; // variable locale signe nombre recu
  long nombreRecu=0; // variable locale nombre recu

 while (Serial.available()>0) { // tant qu’un octet en réception

        octetRecu=Serial.read(); // Lit le 1er octet reçu et le met dans la variable

        if ((octetRecu==‘-‘) && (compt==0))signe=false; // si Octet reçu est le – et si c’est le 1er caractère reçu – signe négatif
        compt=compt+1; // incrémente compt

        octetRecu=octetRecu48; // transfo valeur ASCII en valeur décimale

        // calcul du nombre à partir des valeurs reçues  
        if ((octetRecu>=0)&&(octetRecu<=9)) nombreRecu = (nombreRecu*10)+octetRecu;

        delay(1); // pause pour laisser le temps à la fonction available de recevoir octet suivant

} // fin tant que octet réception

  if (signe==false) nombreRecu=nombreRecu*(1); // prise en compte signe négatif

  return(nombreRecu); // renvoie le nombre calculé

} // fin fonction recevoirNombre

// ////////////////////////// Fin du programme ////////////////////

 

Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.