(→Présentation du projet Arduino) |
|||
(26 versions intermédiaires masquées) | |||
Ligne 1 : | Ligne 1 : | ||
- | + | {{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/mov/compteur_de_passages.mov</videoflash>}} | |
- | {{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/ | + | |
- | == | + | ==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 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.= | =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.= | ||
Ligne 14 : | Ligne 13 : | ||
* [[Image:Plaque2.jpg|50px]] Une plaque labdec ou [[Breadboard]] | * [[Image:Plaque2.jpg|50px]] Une plaque labdec ou [[Breadboard]] | ||
* [[Image:Bp.jpg|50px]] 1 [[bouton poussoir]] | * [[Image:Bp.jpg|50px]] 1 [[bouton poussoir]] | ||
- | * [[Image:Résistance.jpg|50px]] | + | * [[Image:Résistance.jpg|50px]]Une [[résistance]] pour l'[[afficheur 7 segments]] : environ 100 ohms |
* [[Image:Ordi.jpg|50px]] Un [[ordinateur]] pour programmer | * [[Image:Ordi.jpg|50px]] Un [[ordinateur]] pour programmer | ||
* [[Image:DEL.png|50px]] Une [[diode infra-rouge]] émettrice et une [[diode infra-rouge]] réceptrice | * [[Image:DEL.png|50px]] Une [[diode infra-rouge]] émettrice et une [[diode infra-rouge]] réceptrice | ||
Ligne 24 : | Ligne 23 : | ||
==réalisation du projet== | ==réalisation du projet== | ||
===Explication=== | ===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=== | ===Schéma Fritzing=== | ||
- | [[Fichier: | + | [[Fichier:Compteur.jpg|1593x800px]] |
===Code=== | ===Code=== | ||
Ligne 49 : | Ligne 50 : | ||
int raz() | int raz() | ||
- | {if(digitalRead(reset) == LOW) // Si le bouton reset est appuyé alors on remet à zéro | + | {if(digitalRead(reset) == LOW) // Si le bouton reset est appuyé alors on remet à zéro le compteur |
{unit = 0; | {unit = 0; | ||
return 1;} | return 1;} | ||
Ligne 179 : | Ligne 180 : | ||
boolean mes = digitalRead(capt); // mesure du capteur | boolean mes = digitalRead(capt); // mesure du capteur | ||
delay(5); // Temps d'attente de 5ms | delay(5); // Temps d'attente de 5ms | ||
- | boolean etat = mes; // Retranscription de la mesure | + | 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 | + | if (etat == LOW) // Si l'état est bas |
{unit ++; // On rajoute +1 au nombre de passage unit++ == unit=unit+1 | {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 | delay(400);} // temps d'attente de 400ms pour ne pas créer de fausse mesures | ||
} | } | ||
else | else | ||
- | {unit = 0;} // Si il n'y a pas d'état bas | + | {unit = 0;} // Si il n'y a pas d'état bas alors on ne fait rien |
} | } | ||
Ligne 195 : | Ligne 196 : | ||
compt(); | 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 | + | 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. |
} | } | ||
</pre> | </pre> |
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