L’utilisation des LED est un moyen très pratique pour afficher des informations ou des états. Dans ce tutoriel, nous allons voir comment allumer et éteindre une LED à partir d’une chaîne reçue sur le port série. Nous allons utiliser un microcontrôleur Arduino pour réaliser cette tâche. Nous verrons comment configurer le port série et comment écrire le code pour allumer et éteindre la LED. Nous verrons également comment tester le code et vérifier que tout fonctionne correctement.
Allumer/éteindre une LED à partir d’une chaîne reçue sur le port série
1. Présentation
Ce programme permet d’allumer une LED connectée sur une broche de la carte Arduino à partir d’une simple chaîne reçue sur le port série. Un petit programme polyvalent qui montre le principe du contrôle d’un dispositif à réception d’une chaîne sur le 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
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 réalise la lecture des caractères entrant sur le port série tant qu’ils sont disponibles.
- Ensuite, on teste la chaîne obtenue :
- si elle vaut « LED=ON », on allume la LED,
- si elle vaut « LED=OFF », on éteint la LED.
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 Fonctionnement
- On lance côté PC soit le Terminal Série, soit une interface Processing ou PyQt qui envoie la chaîne voulue.
9. 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 : 29/1/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 ? ———
/* Le programme reçoit une chaîne de caractère se terminant par un saut de ligne (depuis le Terminal série ou une interface Processing) sur le port série USB. Cette chaîne reçue est affichée dans le Terminal. Ce programme utilise la nouvelle classe String du langage Arduino. */
// — Fonctionnalités utilisées —
// Utilise la connexion série vers le PC
// Broche 2 : Une LED connectée en série avec sa résistance
// ——– 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 —
const int LED=2; // Constante pour la broche 2
// — 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 (ASCII)
char caractereRecu=0; // variable pour stockage caractère recu
int compt=0; // variable comptage caractères reçus
String chaineReception=« »; // déclare un objet String vide pour reception chaine
// — 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 ——-
pinMode (LED,OUTPUT); // Broche LED configurée en sortie
// ——- 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 —
while (Serial.available()>0) { // tant qu’un octet en réception
octetReception=Serial.read(); // Lit le 1er octet reçu et le met dans la variable
compt=compt+1;
//Serial.println(« Ascii Caractere « + String(compt) + » = « + String(octetReception)); // affiche code ASCII Octet reçu
if (octetReception==10) { // si Octet reçu est le saut de ligne
Serial.println(« Saut de ligne recu »);
Serial.println (« Chaine recue= »+chaineReception); // affiche la chaine recue
//– analyse de la chaine recue
if (chaineReception.startsWith(« LED=ON »)) {
digitalWrite(LED,HIGH);
Serial.println(« LED allumee »);
} // fin if
else if (chaineReception.startsWith(« LED=OFF »)){
digitalWrite(LED,LOW); // éteint la LED
Serial.println(« LED eteinte »);
} // fin else if
else {
Serial.println(« Chaine non reconnue »);
}// fin else
//– une fois l’analyse terminée
chaineReception=« »; //RAZ le String de réception
compt=0; // RAZ compteur
delay(100); // pause
break; // sort de la boucle while
}
else { // si le caractère reçu n’est pas un saut de ligne
caractereRecu=char(octetReception); // convertit l’octet reçu en caractère
chaineReception=chaineReception+caractereRecu; // ajoute le caratère au String
}
} // fin tant que octet réception
//—– une fois que le saut de ligne est reçu, on sort du While et on se positionne ici
} // 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 ////////////////////
// ////////////////////////// Fin du programme ////////////////////
Articles similaires:
- Allumer une LED à partir d’une chaine avec paramètre reçue sur le port Série
- Saisie d’une chaine de caractère dans Processing sélectionne fichier son
- Contrôler un relais par réception d’une chaine de caractères sur le port série
- Recevoir une chaine de caractères depuis le PC via le port série USB
- Test de la fonction math pow()
Articles Liés
- L'appui sur un BP allume une LED sur une carte Arduino distante par envoi d'une chaîne via 2 PC connectés à un réseau wifi.
L'utilisation des technologies modernes pour contrôler des dispositifs à distance est devenue une pratique courante.…
- Stocker en mémoire Eeprom une valeur saisie dans le Terminal Série
L'utilisation d'une mémoire Eeprom pour stocker des valeurs saisies dans un Terminal Série est une…
- Réception d'une chaine saisie dans Processing et renvoi vers Processing
Avec l'avènement de l'ère numérique, les technologies de traitement de données sont devenues plus accessibles…