Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 193

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 197

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338
[ Wikidébrouillard ] Compteur binaire 8 bits

Compteur binaire 8 bits

De Wikidebrouillard.

(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 interrupteur, pour passer d'un mode à l'autre.
+
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>
-
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 *****
+
************************************ Compteur binaire 8 bits ************************************
-
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
+
**                                                                                            **
 +
**                                                                                            **
 +
** 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. **
 +
**                                                                                            **
 +
**                                                                                            **
 +
*************************************************************************************************
-
void setup() 
+
*/
-
{ // debut de la fonction setup()
+
-
  // --- ici instructions à exécuter au démarrage ---
+
//*********************************** Déclaration des broches ***********************************
-
  pinMode (BP, INPUT);
+
 +
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 *****************************
-
  // ------- Broches en sortie ------- 
+
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
-
  // met les 8 broches en sortie
+
//*************************************** 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); //met la broche en sortie
+
     pinMode(LED[i], OUTPUT);          
   }
   }
-
 
+
   attachInterrupt(0, changement_mode, RISING); // on initialise l'interruption
-
   attachInterrupt(0, Reagir, RISING);
+
  // 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 Reagir()
+
//********************************** 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()
{
{
-
   var = !var;
+
   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 (var==HIGH)
+
   {
   {
-
     buttonState = digitalRead (BP);
+
     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 (buttonState != lastButtonState)
+
     {
     {
-
       if (buttonState == 0 )  
+
       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));
       }
       }
-
       lastButtonState = buttonState;
+
       dernier_etat_btn = etat_btn;
 +
      delay (60);
     }
     }
-
 
-
 
   }
   }
-
   while (var == LOW )
+
   while (btn_mode == 0 )
   {
   {
-
     for (int i=0; i<=7; i++) { // boucle de défilement des 8 bits / broches
+
     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
-
      digitalWrite(LED[i],bitRead(compteur,i));
+
     }
     }
-
     compteur=compteur+1; //incrémente i
+
     compteur++;                       // on incrémente le compteur
-
     if (compteur>=256) compteur=0; // RAZ variable compteur 255 ==> 0
+
   
 +
     if (compteur>=256) compteur= 0;   // RAZ de la variable compteur lorsque qu'on dépasse la valeur 255
-
      delay (250); // pause fixant la vitesse du comptage
+
    delay (250);                       // pause de 250ms fixant la vitesse du comptage
   }
   }
-
}
+
}                                     // le programme recommence au début de la fonction loop()
</pre>
</pre>

Version du 12 janvier 2014 à 13:38

Article incomplet en cours de rédaction
Modèle:Vidéo

Sommaire

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 bouton, pour passer d'un mode à l'autre.

Liste du matériel

réalisation du projet

Explication

Schéma Fritzing

Code

/*

************************************ 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()

Liens avec d'autres projets arduino

chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino

Pour aller plus loin

Liens avec le quotidien

quelles peuvent être les applications technologique de ce montage, ou est-ce qu'on retrouve des programme qui y ressemble ?
AR
CO

Compteur binaire 8 bits

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique