Sommaire |
/* ************************************* 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 } //********************************** 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