Sommaire |
Matériel nécessaire pour les capteurs infra-rouge : Kit infra-rouge
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.
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. }
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 ?
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.
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique