Compteur de passages

De Wikidebrouillard.

La vidéo "Compteur de passages"

Sommaire

Présentation du projet Arduino

  • Ce projet permet de compter le nombre de personnes (ou objets) passant devant le capteur. Ce système peut être utilisé en version grandeur nature dans une file d'attente, une allée ... etc.

Ce système est conçu afin de compter le nombre de passage de personne (ou objets) passant devant le capteur ce système peut être utilisé en grandeur nature dans une allée, une file d'attente par exemple.

Liste du matériel

Matériel nécessaire pour les capteurs infra-rouge : Kit infra-rouge

réalisation du projet

Explication

Lorsque l'objet ou la personne reste devant le capteur rien ne se produitmais lorsque celui-ci s'est déplacé hors du champ du capteur il y a de nouveau détection du signal infra-rouge généré par la LED ce qui entraîne l'incrémentation du compteur. Un bouton "reset" est également présent pour réinitialier le compteur.

Schéma Fritzing

Code

int led2 = 2, led3 = 3, led4 = 4, led5 = 5, led6 = 6, led7 = 7, led8 = 8, reset = 10, unit = 0, mes = 0, capt = 9, etat = 0; // Définition des variables que l'on va utiliser

  // ************ Initialisation des réglages ************ //

void setup() {
  Serial.begin(9600);        // Ouverture du port série à 9600bps
  digitalWrite(reset, HIGH); // Active les résistances de pull-up internes afin de pouvoir détecter une pression sur le bouton reset
  pinMode(capt, INPUT);      // Défini la voie capt (la voie 9 de l'arduino) comme une entrée
  pinMode(led2, OUTPUT);     // Défini la voie led2 (la voie 2 de l'arduino) comme une sortie
  pinMode(led3, OUTPUT);     // Défini la voie led2 (la voie 3 de l'arduino) comme une sortie
  pinMode(led4, OUTPUT);     // Défini la voie led2 (la voie 4 de l'arduino) comme une sortie
  pinMode(led5, OUTPUT);     // Défini la voie led2 (la voie 5 de l'arduino) comme une sortie
  pinMode(led6, OUTPUT);     // Défini la voie led2 (la voie 6 de l'arduino) comme une sortie
  pinMode(led7, OUTPUT);     // Défini la voie led2 (la voie 7 de l'arduino) comme une sortie
  pinMode(led8, OUTPUT);     // Défini la voie led2 (la voie 8 de l'arduino) comme une sortie
}

  // ************ Fonction de remise à zéro ************ //

int raz()
{if(digitalRead(reset) == LOW) // Si le bouton reset est appuyé alors on remet à zéro le compteur
{unit = 0;
return 1;}
}

  // ************ Gestion de l'afficheur ************ //
  
void aff() {
switch (unit) {
  case 0 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, LOW);   // Fixe la led5 comme allumée
  digitalWrite(led6, LOW);   // Fixe la led6 comme allumée
  digitalWrite(led7, LOW);   // Fixe la led7 comme allumée
  digitalWrite(led8, HIGH);  // Fixe la led8 comme éteinte
  }
  break;
  case 1 :
  {
  digitalWrite(led2, HIGH);  // Fixe la led2 comme éteinte
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, HIGH);  // Fixe la led5 comme éteinte
  digitalWrite(led6, HIGH);  // Fixe la led6 comme éteinte
  digitalWrite(led7, HIGH);  // Fixe la led7 comme éteinte
  digitalWrite(led8, HIGH);  // Fixe la led8 comme éteinte
  }
  break;
  case 2 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, HIGH);  // Fixe la led4 comme éteinte
  digitalWrite(led5, LOW);   // Fixe la led5 comme allumée
  digitalWrite(led6, LOW);   // Fixe la led6 comme allumée
  digitalWrite(led7, HIGH);  // Fixe la led7 comme éteinte
  digitalWrite(led8, LOW);   // Fixe la led8 comme allumée
  }
  break; 
  case 3 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, LOW);   // Fixe la led5 comme allumée
  digitalWrite(led6, HIGH);  // Fixe la led6 comme éteinte
  digitalWrite(led7, HIGH);  // Fixe la led7 comme éteinte
  digitalWrite(led8, LOW);   // Fixe la led8 comme allumée
  }
  break;
  case 4 :
  {
  digitalWrite(led2, HIGH);  // Fixe la led2 comme éteinte
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, HIGH);  // Fixe la led5 comme éteinte
  digitalWrite(led6, HIGH);  // Fixe la led6 comme éteinte
  digitalWrite(led7, LOW);   // Fixe la led7 comme allumée
  digitalWrite(led8, LOW);   // Fixe la led8 comme allumée
  }
  break; 
  case 5 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, HIGH);  // Fixe la led3 comme éteinte
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, LOW);   // Fixe la led5 comme allumée
  digitalWrite(led6, HIGH);  // Fixe la led6 comme éteinte
  digitalWrite(led7, LOW);   // Fixe la led7 comme allumée
  digitalWrite(led8, LOW);   // Fixe la led8 comme allumée
  }
  break;
  case 6 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, HIGH);  // Fixe la led3 comme éteinte
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, LOW);   // Fixe la led5 comme allumée
  digitalWrite(led6, LOW);   // Fixe la led6 comme allumée
  digitalWrite(led7, LOW);   // Fixe la led7 comme allumée
  digitalWrite(led8, LOW);   // Fixe la led8 comme allumée
  }
  break;
   case 7 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, HIGH);  // Fixe la led5 comme etéinte
  digitalWrite(led6, HIGH);  // Fixe la led6 comme eteinte
  digitalWrite(led7, HIGH);  // Fixe la led7 comme éteinte
  digitalWrite(led8, HIGH);  // Fixe la led8 comme éteinte
  }
  break;
   case 8 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, LOW);   // Fixe la led5 comme allumée
  digitalWrite(led6, LOW);   // Fixe la led6 comme allumée
  digitalWrite(led7, LOW);   // Fixe la led7 comme allumée
  digitalWrite(led8, LOW);   // Fixe la led8 comme allumée
  }
  break;
   case 9 :
  {
  digitalWrite(led2, LOW);   // Fixe la led2 comme allumée
  digitalWrite(led3, LOW);   // Fixe la led3 comme allumée
  digitalWrite(led4, LOW);   // Fixe la led4 comme allumée
  digitalWrite(led5, LOW);   // Fixe la led5 comme allumée
  digitalWrite(led6, HIGH);  // Fixe la led6 comme éteinte
  digitalWrite(led7, LOW);   // Fixe la led7 comme allumée
  digitalWrite(led8, LOW);   // Fixe la led8 comme allumée
  }
  break; 
  default:
  raz(); // En cas de problème on force tout à 0
}
}

// ************ Fonction permettant de compter le nombre de passages ************ //
int compt(){
  if(unit < 10)
  {
  boolean mes = digitalRead(capt); // mesure du capteur
  delay(5);                        // Temps d'attente de 5ms
  boolean etat = mes;              // Retranscription de la mesure par HIGH (état haut (1) ) ou LOW (état bas(0) )
  if (etat == LOW)                 // Si l'état est bas
  {unit ++;                        // On rajoute +1 au nombre de passage unit++ == unit=unit+1
   delay(400);}                    // temps d'attente de 400ms pour ne pas créer de fausse mesures
  }
  else
  {unit = 0;}                      // Si il n'y a pas d'état bas alors on ne fait rien
}

// ************ Fonction principale ************ //
 
void loop() {
 do{
 aff();
 compt();
 }
 while (raz()!=1); // Temps que la remise à zéro n'est pas activée alors le programme de comptage et d'affichage sont lancés.
}

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 ?

On peut utiliser se principe en comptant le nombre de colis que la poste envoie. Sur un tapis qui distribue les colis aux différent camion de livraison par exemple.

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraitsAnnuaire
AR
CO

Compteur de passages

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