(→Code) |
|||
Ligne 21 : | Ligne 21 : | ||
===Code=== | ===Code=== | ||
<pre> | <pre> | ||
- | + | const int BP = 11; | |
- | // | + | const int LED[8]={3,4,5,6,7,8,9,10}; // déclare un tableau de 8 constantes de broches |
+ | // la broche 2 correspond au bit de poids faible (index 0 du tableau) | ||
+ | // la broche 9 correspond au bit de poids fort (index 8 du tableau) | ||
+ | // --- Déclaration des variables globales --- | ||
+ | int compteur=0; //variable de comptage | ||
+ | int buttonState = 1; | ||
+ | int lastButtonState = 1; | ||
+ | int var = 1; | ||
+ | |||
+ | //**************** 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 --- | ||
+ | pinMode (BP, INPUT); | ||
+ | |||
+ | |||
+ | |||
+ | // ------- Broches en sortie ------- | ||
+ | |||
+ | // met les 8 broches en sortie | ||
+ | for (int i=0; i<=7; i++) | ||
+ | { | ||
+ | pinMode(LED[i], OUTPUT); //met la broche en sortie | ||
+ | } | ||
+ | |||
+ | attachInterrupt(0, Reagir, RISING); | ||
+ | } | ||
+ | |||
+ | void Reagir() | ||
+ | { | ||
+ | var = !var; | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | |||
+ | |||
+ | while (var==HIGH) | ||
+ | { | ||
+ | buttonState = digitalRead (BP); | ||
+ | |||
+ | |||
+ | |||
+ | if (buttonState != lastButtonState) | ||
+ | { | ||
+ | if (buttonState == 0 ) | ||
+ | { | ||
+ | compteur++; | ||
+ | |||
+ | |||
+ | if (compteur>=256) compteur=0; | ||
+ | } | ||
+ | |||
+ | for (int i=0; i<=7; i++) | ||
+ | { | ||
+ | digitalWrite(LED[i],bitRead(compteur,i)); | ||
+ | } | ||
+ | lastButtonState = buttonState; | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | while (var == LOW ) | ||
+ | { | ||
+ | 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 | ||
+ | } | ||
+ | } | ||
- | |||
</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 interrupteur, pour passer d'un mode à l'autre.
const int BP = 11; const int LED[8]={3,4,5,6,7,8,9,10}; // déclare un tableau de 8 constantes de broches // la broche 2 correspond au bit de poids faible (index 0 du tableau) // la broche 9 correspond au bit de poids fort (index 8 du tableau) // --- Déclaration des variables globales --- int compteur=0; //variable de comptage int buttonState = 1; int lastButtonState = 1; int var = 1; //**************** 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 --- pinMode (BP, INPUT); // ------- Broches en sortie ------- // met les 8 broches en sortie for (int i=0; i<=7; i++) { pinMode(LED[i], OUTPUT); //met la broche en sortie } attachInterrupt(0, Reagir, RISING); } void Reagir() { var = !var; } void loop() { while (var==HIGH) { buttonState = digitalRead (BP); if (buttonState != lastButtonState) { if (buttonState == 0 ) { compteur++; if (compteur>=256) compteur=0; } for (int i=0; i<=7; i++) { digitalWrite(LED[i],bitRead(compteur,i)); } lastButtonState = buttonState; } } while (var == LOW ) { 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 } }
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