ENIB 2020 : capteur de mouvement : Différence entre versions
(Page créée avec « ==photo de l'équipe== 600px ==Que fait ce projet ? == ==Liste des composants== * composant 1 * composant 2 * ... ==Code== <pre> ici je p... ») |
|||
| Ligne 3 : | Ligne 3 : | ||
==Que fait ce projet ? == | ==Que fait ce projet ? == | ||
| + | Ce projet consiste en un détecteur de mouvement. a l'approche de l'interface les Leds s'allume différemment selon la position de la personne. | ||
==Liste des composants== | ==Liste des composants== | ||
| − | * | + | * LEDS |
| − | * | + | * capteurs de distance a ultrasons HC-SR04 |
| − | * | + | * résistances |
| + | * fils | ||
==Code== | ==Code== | ||
<pre> | <pre> | ||
ici je pose mon code documenté ! | ici je pose mon code documenté ! | ||
| − | </ | + | // LEDs pins |
| + | #define TR1 8 | ||
| + | #define TR2 3 | ||
| + | #define TR3 4 | ||
| + | #define TR4 5 | ||
| + | #define TRIGGER_PIN 6 | ||
| + | #define ECHO_PIN 7 | ||
| + | |||
| + | |||
| + | /* Constantes pour le timeout */ | ||
| + | const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s | ||
| + | |||
| + | /* Vitesse du son dans l'air en mm/us */ | ||
| + | const float SOUND_SPEED = 340.0 / 1000; | ||
| + | |||
| + | void setup() { | ||
| + | |||
| + | |||
| + | |||
| + | pinMode(TR1, OUTPUT); | ||
| + | pinMode(TR2, OUTPUT); | ||
| + | pinMode(TR3, OUTPUT); | ||
| + | pinMode(TR4, OUTPUT); | ||
| + | |||
| + | pinMode(TRIGGER_PIN, OUTPUT); | ||
| + | digitalWrite(TRIGGER_PIN, LOW); | ||
| + | pinMode(ECHO_PIN, INPUT); | ||
| + | |||
| + | Serial.begin(9600); | ||
| + | } | ||
| + | |||
| + | |||
| + | void loop() { | ||
| + | |||
| + | /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */ | ||
| + | digitalWrite(TRIGGER_PIN, HIGH); | ||
| + | delayMicroseconds(10); | ||
| + | digitalWrite(TRIGGER_PIN, LOW); | ||
| + | |||
| + | /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */ | ||
| + | long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT); | ||
| + | |||
| + | /* 3. Calcul la distance à partir du temps mesuré */ | ||
| + | float distance_mm = measure / 2.0 * SOUND_SPEED; | ||
| + | |||
| + | if (distance_mm > 0 && distance_mm <= 100) | ||
| + | { | ||
| + | digitalWrite(TR4,HIGH); | ||
| + | digitalWrite(TR3,LOW); | ||
| + | digitalWrite(TR2,LOW); | ||
| + | digitalWrite(TR1,LOW); | ||
| + | Serial.println(" premier"); | ||
| + | |||
| + | } | ||
| + | else if(distance_mm > 100 && distance_mm <= 200) | ||
| + | { | ||
| + | digitalWrite(TR4,LOW); | ||
| + | digitalWrite(TR3,HIGH); | ||
| + | digitalWrite(TR2,LOW); | ||
| + | digitalWrite(TR1,LOW); | ||
| + | Serial.println("deuxieme"); | ||
| + | |||
| + | } | ||
| + | else if(distance_mm > 200 && distance_mm <= 300) | ||
| + | { | ||
| + | digitalWrite(TR4,LOW); | ||
| + | digitalWrite(TR3,LOW); | ||
| + | digitalWrite(TR2,HIGH); | ||
| + | digitalWrite(TR1,LOW); | ||
| + | Serial.println("troisieme"); | ||
| + | |||
| + | } | ||
| + | else if(distance_mm > 300 && distance_mm <= 400) | ||
| + | { | ||
| + | digitalWrite(TR4,LOW); | ||
| + | digitalWrite(TR3,LOW); | ||
| + | digitalWrite(TR2,LOW); | ||
| + | digitalWrite(TR1,HIGH); | ||
| + | Serial.println("dernier"); | ||
| + | |||
| + | } | ||
| + | else //if (distance_mm == 0 || distance_mm > 2800) | ||
| + | { | ||
| + | digitalWrite(TR4,LOW); | ||
| + | digitalWrite(TR3,LOW); | ||
| + | digitalWrite(TR2,LOW); | ||
| + | digitalWrite(TR1,LOW); | ||
| + | Serial.println("aucune"); | ||
| + | |||
| + | } | ||
| + | |||
| + | /* Affiche les résultats en mm, cm et m */ | ||
| + | Serial.print(F("Distance: ")); | ||
| + | Serial.print(distance_mm); | ||
| + | Serial.print(F("mm (")); | ||
| + | Serial.print(distance_mm / 10.0, 2); | ||
| + | Serial.print(F("cm, ")); | ||
| + | Serial.print(distance_mm / 1000.0, 2); | ||
| + | Serial.println(F("m)")); | ||
| + | |||
| + | |||
| + | /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */ | ||
| + | delay(1000); | ||
| + | |||
| + | } | ||
==Catégories== | ==Catégories== | ||
[[Catégorie:Enib2020]] | [[Catégorie:Enib2020]] | ||
Version du 20 janvier 2020 à 10:28
photo de l'équipe
Que fait ce projet ?
Ce projet consiste en un détecteur de mouvement. a l'approche de l'interface les Leds s'allume différemment selon la position de la personne.
Liste des composants
- LEDS
- capteurs de distance a ultrasons HC-SR04
- résistances
- fils
Code
ici je pose mon code documenté !
// LEDs pins
#define TR1 8
#define TR2 3
#define TR3 4
#define TR4 5
#define TRIGGER_PIN 6
#define ECHO_PIN 7
/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s
/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;
void setup() {
pinMode(TR1, OUTPUT);
pinMode(TR2, OUTPUT);
pinMode(TR3, OUTPUT);
pinMode(TR4, OUTPUT);
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW);
pinMode(ECHO_PIN, INPUT);
Serial.begin(9600);
}
void loop() {
/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
/* 3. Calcul la distance à partir du temps mesuré */
float distance_mm = measure / 2.0 * SOUND_SPEED;
if (distance_mm > 0 && distance_mm <= 100)
{
digitalWrite(TR4,HIGH);
digitalWrite(TR3,LOW);
digitalWrite(TR2,LOW);
digitalWrite(TR1,LOW);
Serial.println(" premier");
}
else if(distance_mm > 100 && distance_mm <= 200)
{
digitalWrite(TR4,LOW);
digitalWrite(TR3,HIGH);
digitalWrite(TR2,LOW);
digitalWrite(TR1,LOW);
Serial.println("deuxieme");
}
else if(distance_mm > 200 && distance_mm <= 300)
{
digitalWrite(TR4,LOW);
digitalWrite(TR3,LOW);
digitalWrite(TR2,HIGH);
digitalWrite(TR1,LOW);
Serial.println("troisieme");
}
else if(distance_mm > 300 && distance_mm <= 400)
{
digitalWrite(TR4,LOW);
digitalWrite(TR3,LOW);
digitalWrite(TR2,LOW);
digitalWrite(TR1,HIGH);
Serial.println("dernier");
}
else //if (distance_mm == 0 || distance_mm > 2800)
{
digitalWrite(TR4,LOW);
digitalWrite(TR3,LOW);
digitalWrite(TR2,LOW);
digitalWrite(TR1,LOW);
Serial.println("aucune");
}
/* Affiche les résultats en mm, cm et m */
Serial.print(F("Distance: "));
Serial.print(distance_mm);
Serial.print(F("mm ("));
Serial.print(distance_mm / 10.0, 2);
Serial.print(F("cm, "));
Serial.print(distance_mm / 1000.0, 2);
Serial.println(F("m)"));
/* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */
delay(1000);
}
Catégories
