View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Allumer une LED à partir d'une chaine avec paramètre reçue sur le port Série

Par X. HINAULT - Page créée le : 20/10/2012

1.  Présentation

Ce programme permet d'allumer une LED connectée sur n'importe quelle broche de la carte Arduino à partir d'une chaine reçue sur le port Série. L'intérêt ici est l'utilisation de ma librairie Utils qui implémente des fonctions facilitant le décodage de chaines avec paramètres en provenance du port série.

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
  • Ma librairie Arduino Utils

2.  Matériel Nécessaire

2.1  L'espace de développement Arduino

  • ... pour éditer, compiler le programme et programmer la carte Arduino.

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

  • une plaque d'essai pour montage sans soudures,
  • des straps,
  • une LED rouge 5mm,
  • une résistance 1/4w de 200 Ohms environ,

3.  Instructions de montage

  • La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)
  • Broche 2 : Une LED connectée en série avec sa résistance

4.  Le schéma théorique du montage

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

5.  Le circuit du montage

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

6.  Fonctionnement du programme

6.1  Structure globale du programme

Ce programme simple comprend :

  • une entête déclarative
  • une partie « configuration » qui ne sera exécutée qu'une fois (fonction setup( ) )
  • une partie constituée d'une boucle sans fin que le programme répètera à l'infini ( fonction loop( ) ) : c'est le coeur du programme.

6.2  Déroulement du programme

Le programme se déroule de la façon suivante :

  • Après avoir pris en compte les instructions de la partie déclarative,
  • puis après avoir exécuté la partie configuration ( fonction setup( ) ),
  • le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme

7.  Explication du programme

7.1  Au niveau de la partie déclarative :

  • On déclare la broche de LED

7.2  Au niveau de la fonction d'initialisation setup( ) :

  • On met la broche en sortie

7.3  Au niveau de la boucle principale, la fonction loop ( ) :

  • On reçoit la chaine en réception sur le port série à l'aide de la fonction waiting()
  • On analyse ensuite la chaîne reçue avec la fonction testInstructionLong() qui permet de vérifier le formatage de la chaine reçue : ici digitalWrite(broche,etat)

8.  Mise en oeuvre du programme

8.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

8.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 ».
  • La fenêtre « Terminal » s'ouvre alors :
  • 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 :

8.3  Fonctionnement

  • Saisir une chaine de la forme digitalWrite(broche,etat) sur dans le Terminal Série

9.  Le programme complet en langage Arduino

A copier/coller directement dans l'éditeur Arduino



//--- exemple librairie Utils ---
// Par X. HINAULT - Sept. 2012
// Tous droits réservés - GPLv3

#include <Utils.h> // inclusion de la librairie

Utils utils; // déclare objet racine d'accès aux fonctions de la librairie Utils

String chaineReception=""; // déclare un String
long params[6]; // déclare un tableau de long - taille en fonction nombre max paramètres attendus

int LED=2; // broche de la LED

void setup() {

  pinMode(LED,OUTPUT); // met la broche en sortie

  Serial.begin(115200); // Initialisation vitesse port Série
  // Utiliser vitesse idem coté Terminal série

  Serial.println("Saisir une chaine de la forme digitalWrite(broche,etat)");
  Serial.println(" avec broche entre 0 et 19 et niveau 0 ou 1 :"); // message initial

} // fin setup

void loop() {

    //chaineReception=utils.waitingString(true);// avec debug
    chaineReception=utils.waitingString();// sans debug

    if (chaineReception!="") { // si une chaine a été reçue

    if(utils.testInstructionLong(chaineReception,"digitalWrite(",2,params)==true) { // si chaine digitalWrite(broche, etat) bien reçue

        Serial.println("Arduino a recu le parametre : " + (String)params[0]);
       Serial.println("Arduino a recu le parametre : " + (String)params[1]);

         digitalWrite(params[0],params[1]); // met la broche dans l'état voulu

    } // fin si testInstructionLong==true

    } // fin // si une chaine a été reçue

} // fin loop