(→Code) |
|||
Ligne 3 : | Ligne 3 : | ||
==Présentation du projet arduino== | ==Présentation du projet arduino== | ||
- | Ce programme réalise un affichage d'un compteur binaire sur 8 LEDs. Chaque LED visualise directement l'état d'un bit de l'octet utilisé pour le comptage. On peut le faire manuellement ou automatiquement en utilisant un | + | Ce programme réalise un affichage d'un compteur binaire sur 8 LEDs. Chaque LED visualise directement l'état d'un bit de l'octet utilisé pour le comptage. On peut le faire manuellement ou automatiquement en utilisant un bouton, pour passer d'un mode à l'autre. |
==Liste du matériel== | ==Liste du matériel== | ||
Ligne 21 : | Ligne 21 : | ||
===Code=== | ===Code=== | ||
<pre> | <pre> | ||
- | + | /* | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ************************************ Compteur binaire 8 bits ************************************ | |
- | + | ** ** | |
+ | ** ** | ||
+ | ** Ce compteur binaire possède deux modes de fonctionnement qu'on sélectionne avec le bouton ** | ||
+ | ** poussoir connecté sur la broche 2 de l'arduino. Un mode manuel qui est sélectionné par ** | ||
+ | ** défaut et qui incrémente le comptage à l'aide du bouton pousoir connecté sur la broche 11. ** | ||
+ | ** Un mode automatique qu'on sélectionne/déselectionne par pression sur le bouton en question. ** | ||
+ | ** ** | ||
+ | ** ** | ||
+ | ************************************************************************************************* | ||
- | + | */ | |
- | + | ||
- | + | //*********************************** Déclaration des broches *********************************** | |
- | + | ||
+ | const int btn_increment = 11; // le bouton est connecté à la broche 11 de la carte arduino | ||
+ | const int LED[8]={3,4,5,6,7,8,9,10}; // déclare un tableau de 8 constantes de broches | ||
+ | // la broche 3 correspond au bit de poids faible (index 0 du tableau) | ||
+ | // la broche 10 correspond au bit de poids fort (index 8 du tableau) | ||
+ | //***************************** Déclaration des variables globales ***************************** | ||
- | + | int compteur = 0; // variable de comptage | |
+ | int etat_btn = HIGH; // variable qui enregistre l'état du bouton | ||
+ | int dernier_etat_btn = HIGH; // variable qui enregiste le dernier état du bouton | ||
+ | int btn_mode = 1; // variable qui permet de passer d'un mode à l'autre | ||
- | + | //*************************************** Fonction setup *************************************** | |
- | for (int i=0; i<=7; i++) | + | // La fonction setup() est exécutée en premier et une seule fois au démarrage du programme |
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode (btn_increment, INPUT); // le bouton d'incrémentation est une entrée | ||
+ | for (int i=0; i<=7; i++) // met les 8 LEDs en sortie | ||
{ | { | ||
- | pinMode(LED[i], OUTPUT); | + | pinMode(LED[i], OUTPUT); |
} | } | ||
- | + | attachInterrupt(0, changement_mode, RISING); // on initialise l'interruption | |
- | attachInterrupt(0, | + | // 0 représente le numéro de la broche utilisé pour l'intérruption, c'est à dire la broche 2 |
+ | // changement_mode est le nom de la fonction à appeler lorsque l'interruption est déclenché | ||
+ | // RISING est le type de déclenchement, celui-ci détecte un front montant (passage de l'état bas à l'état haut) | ||
} | } | ||
- | void | + | //********************************** Programme d'interruption ********************************** |
+ | // La fonction void changement_mode() est exécutée à chaque pression du bouton qui permet de changer de mode | ||
+ | |||
+ | void changement_mode() | ||
{ | { | ||
- | + | btn_mode = !btn_mode; // change la variable par son opposé | |
} | } | ||
- | void loop() | + | //*************************************** Fonction loop *************************************** |
+ | // La fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension | ||
+ | |||
+ | void loop() // début de la fonction loop | ||
{ | { | ||
- | + | while (btn_mode == 1) // tant que btn_mode = 1, on exécute cette boucle | |
- | + | ||
- | while ( | + | |
{ | { | ||
- | + | etat_btn = digitalRead (11); // lit l'état actuel du bouton poussoir et le mémorise dans la variable etat_btn | |
- | + | if (etat_btn != dernier_etat_btn) // si l'état du bouton est différent du dernier état, on exécute la boucle | |
- | + | ||
- | if ( | + | |
{ | { | ||
- | if ( | + | if (etat_btn == LOW ) // si l'état du bouton est 0 |
{ | { | ||
- | compteur++; | + | compteur++; // on incrémente le compteur |
- | + | ||
- | + | if (compteur>=256) compteur = 0; // RAZ de la variable compteur lorsque qu'on dépasse la valeur 255 | |
- | if (compteur>=256) compteur=0; | + | |
} | } | ||
Ligne 82 : | Ligne 96 : | ||
digitalWrite(LED[i],bitRead(compteur,i)); | digitalWrite(LED[i],bitRead(compteur,i)); | ||
} | } | ||
- | + | dernier_etat_btn = etat_btn; | |
+ | delay (60); | ||
} | } | ||
- | |||
- | |||
} | } | ||
- | while ( | + | while (btn_mode == 0 ) |
{ | { | ||
- | for (int i=0; i<=7; i++) | + | 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));// met la broche LED[i] dans l'état du bit de rang i de la variable compteur |
- | + | ||
} | } | ||
- | compteur | + | compteur++; // on incrémente le compteur |
- | if (compteur>=256) compteur=0; // RAZ variable compteur 255 | + | |
+ | if (compteur>=256) compteur= 0; // RAZ de la variable compteur lorsque qu'on dépasse la valeur 255 | ||
- | + | delay (250); // pause de 250ms fixant la vitesse du comptage | |
} | } | ||
- | } | + | } // le programme recommence au début de la fonction loop() |
</pre> | </pre> |
Sommaire |
Ce programme réalise un affichage d'un compteur binaire sur 8 LEDs. Chaque LED visualise directement l'état d'un bit de l'octet utilisé pour le comptage. On peut le faire manuellement ou automatiquement en utilisant un bouton, pour passer d'un mode à l'autre.
/* ************************************ Compteur binaire 8 bits ************************************ ** ** ** ** ** Ce compteur binaire possède deux modes de fonctionnement qu'on sélectionne avec le bouton ** ** poussoir connecté sur la broche 2 de l'arduino. Un mode manuel qui est sélectionné par ** ** défaut et qui incrémente le comptage à l'aide du bouton pousoir connecté sur la broche 11. ** ** Un mode automatique qu'on sélectionne/déselectionne par pression sur le bouton en question. ** ** ** ** ** ************************************************************************************************* */ //*********************************** Déclaration des broches *********************************** const int btn_increment = 11; // le bouton est connecté à la broche 11 de la carte arduino const int LED[8]={3,4,5,6,7,8,9,10}; // déclare un tableau de 8 constantes de broches // la broche 3 correspond au bit de poids faible (index 0 du tableau) // la broche 10 correspond au bit de poids fort (index 8 du tableau) //***************************** Déclaration des variables globales ***************************** int compteur = 0; // variable de comptage int etat_btn = HIGH; // variable qui enregistre l'état du bouton int dernier_etat_btn = HIGH; // variable qui enregiste le dernier état du bouton int btn_mode = 1; // variable qui permet de passer d'un mode à l'autre //*************************************** Fonction setup *************************************** // La fonction setup() est exécutée en premier et une seule fois au démarrage du programme void setup() { pinMode (btn_increment, INPUT); // le bouton d'incrémentation est une entrée for (int i=0; i<=7; i++) // met les 8 LEDs en sortie { pinMode(LED[i], OUTPUT); } attachInterrupt(0, changement_mode, RISING); // on initialise l'interruption // 0 représente le numéro de la broche utilisé pour l'intérruption, c'est à dire la broche 2 // changement_mode est le nom de la fonction à appeler lorsque l'interruption est déclenché // RISING est le type de déclenchement, celui-ci détecte un front montant (passage de l'état bas à l'état haut) } //********************************** Programme d'interruption ********************************** // La fonction void changement_mode() est exécutée à chaque pression du bouton qui permet de changer de mode void changement_mode() { btn_mode = !btn_mode; // change la variable par son opposé } //*************************************** Fonction loop *************************************** // La fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop() // début de la fonction loop { while (btn_mode == 1) // tant que btn_mode = 1, on exécute cette boucle { etat_btn = digitalRead (11); // lit l'état actuel du bouton poussoir et le mémorise dans la variable etat_btn if (etat_btn != dernier_etat_btn) // si l'état du bouton est différent du dernier état, on exécute la boucle { if (etat_btn == LOW ) // si l'état du bouton est 0 { compteur++; // on incrémente le compteur if (compteur>=256) compteur = 0; // RAZ de la variable compteur lorsque qu'on dépasse la valeur 255 } for (int i=0; i<=7; i++) { digitalWrite(LED[i],bitRead(compteur,i)); } dernier_etat_btn = etat_btn; delay (60); } } while (btn_mode == 0 ) { for (int i=0; i<=7; i++) // boucle de défilement des 8 bits / broches { digitalWrite(LED[i],bitRead(compteur,i));// met la broche LED[i] dans l'état du bit de rang i de la variable compteur } compteur++; // on incrémente le compteur if (compteur>=256) compteur= 0; // RAZ de la variable compteur lorsque qu'on dépasse la valeur 255 delay (250); // pause de 250ms fixant la vitesse du comptage } } // le programme recommence au début de la fonction loop()
chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino
quelles peuvent être les applications technologique de ce montage, ou est-ce qu'on retrouve des programme qui y ressemble ?
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique