8 LEDs en Compteur binaireARDUINO - INITIATION - LED
On this page... (hide)
1. PrésentationCe programme réalise un affichage en compteur binaire sur 8 LEDs. Chaque LED visualise directement l'état d'un bit de l'octet utilisé pour le comptage. Ce programme est à visée purement didactique afin de comprendre ce qui se passe à l'intérieur d'un octet du microcontrôleur lorsque l'on réalise un comptage. 2. Note théoriqueUn octet est un ensemble de 8 "cases" mémoire pouvant chacune contenir 0 ou 1. Chaque case est appelée un bit. Dans un octet, il y a un bit de poids fort et un bit de poids faible.
A l'aide d'un octet, on peut compter de 0 (tous les bits à 0 soit 00000000) à 255 (tous les bits à 1 soit 11111111). Voici le comptage binaire pour les nombres de 0 à 15 :
3. Matériel Nécessaire3.1 L'espace de développement Arduino
![]() 3.2 Le matériel suivant pour réaliser le montage associé
![]()
![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 4. Instructions de montage
5. Le schéma théorique du montage![]() Le schéma théorique du montage 6. Le circuit du montage![]() Le schéma du montage à réaliser 7. Explication du programme7.1 Structure globale du programmeCe programme simple comprend :
7.2 Déroulement du programmeLe programme se déroule de la façon suivante :
![]() Le déroulement du programme 8. Au niveau de la partie déclarative :Déclaration des constantes de broches
Il est pratique d'utiliser un tableau dès lors que l'on va utiliser une action répétée sur plusieurs broches. Chaque broche sera ainsi accessible à l'aide de l'index du tableau, avec l'index 0 pour la première valeur. Un truc de programmation qui vous fera écrire des programmes propres. const int LED[8]={4,5,6,7,8,9,10,11}; // déclare un tableau de 8 constantes de broches // la broche 4 correspond au bit de poids faible (index 0 du tableau) // la broche 11 correspond au bit de poids fort (index 8 du tableau) Déclaration des variables globales
int compteur=0; //variable de comptage Déclarations des objets utiles pour les fonctionnalités utilisées
9. Au niveau de la fonction d'initialisation setup( ) :configuration des broches utilisées :
// met les 8 broches en sortie for (int i=0; i<=7; i++) { // boucle de défilement des 8 broches pinMode(LED[i], OUTPUT); //met la broche en sortie } 10. Au niveau de la boucle principale, la fonction loop ( ) :
for (int i=0; i<=7; i++) { // boucle de défilement des 8 bits / broches // met la broche LED[i] dans l'état du bit de rang i de la variable compteur digitalWrite(LED[i],bitRead(compteur,i)); }
compteur=compteur+1; //incrémente i if (compteur>=256) compteur=0; // RAZ variable compteur 255 ==> 0 delay (250); // pause fixant la vitesse du comptage
Se reporter aux commentaires présents dans le programme pour plus de détails. 11. Mise en oeuvre du programme11.1 Préparation du montage et programmation de la carte Arduino :
11.2 Fonctionnement
12. Le programme complet en langage Arduino :A copier/coller directement dans l'éditeur Arduino // --- Programme Arduino --- // Copyright X. HINAULT - Créé le 05/05/2010 // www.mon-club-elec.fr // Code sous licence GNU GPL : // 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/>. // // --- Que fait ce programme ? --- /* 8 LEDs en compteur binaire. */ // --- Fonctionnalités utilisées --- // --- Circuit à réaliser --- // Connecter sur la broche 4 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V // Connecter sur la broche 5 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V // Connecter sur la broche 6 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V // Connecter sur la broche 7 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V // Connecter sur la broche 8 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V // Connecter sur la broche 9 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V // Connecter sur la broche 10 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V // Connecter sur la broche 11 (configurée en sortie) une LED et sa résistance 270 Ohms en série connectée au 0V //**************** Entête déclarative ******* // A ce niveau sont déclarées les librairies incluses, les constantes, les variables... // --- Inclusion des librairies utilisées --- // --- Déclaration des constantes --- // --- constantes des broches --- const int LED[8]={4,5,6,7,8,9,10,11}; // déclare un tableau de 8 constantes de broches // la broche 4 correspond au bit de poids faible (index 0 du tableau) // la broche 11 correspond au bit de poids fort (index 8 du tableau) // --- Déclaration des variables globales --- int compteur=0; //variable de comptage // --- Déclaration des objets utiles pour les fonctionnalités utilisées --- //**************** 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 au démarrage --- // ------- Broches en sortie ------- // met les 8 broches en sortie for (int i=0; i<=7; i++) { // boucle de défilement des 8 broches pinMode(LED[i], OUTPUT); //met la broche en sortie } } // fin de la fonction setup() // ******************************************************************************** //*************** 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() for (int i=0; i<=7; i++) { // boucle de défilement des 8 bits / broches // met la broche LED[i] dans l'état du bit de rang i de la variable compteur digitalWrite(LED[i],bitRead(compteur,i)); } compteur=compteur+1; //incrémente i if (compteur>=256) compteur=0; // RAZ variable compteur 255 ==> 0 delay (250); // pause fixant la vitesse du comptage } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** //*************** Autres Fonctions du programme ************* // --- Fin programme --- |