ENIB 2020 : capteur de mouvement : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(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... »)
 
(photo de l'équipe)
 
(3 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
==photo de l'équipe==
 
==photo de l'équipe==
 
[[Fichier:Photoenib2018.jpg|600px]]
 
[[Fichier:Photoenib2018.jpg|600px]]
 +
 +
[[Fichier:82971754 167508094515156 7008245630355111936 n.jpg|600px]]
 +
 +
[[Fichier:82552125 737509823441273 4178309846732374016 n.jpg|600px]]
  
 
==Que fait ce projet ? ==
 
==Que fait ce projet ? ==
 +
Ce projet consiste à faire un détecteur de mouvement. En fonction de la distance de la personne ou de l'objet, une partie des Leds vont s'allumer.
  
 
==Liste des composants==
 
==Liste des composants==
  
* composant 1
+
* LEDS
* composant 2
+
* capteurs de distance a ultrasons HC-SR04
* ...
+
* résistances
 +
* fils
 +
* Cartons (pour l'esthétique)
  
 
==Code==
 
==Code==
 
<pre>
 
<pre>
 
ici je pose mon code documenté !
 
ici je pose mon code documenté !
</pre>
+
// 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 actuelle datée du 20 janvier 2020 à 16:15

photo de l'équipe

Photoenib2018.jpg

82971754 167508094515156 7008245630355111936 n.jpg

82552125 737509823441273 4178309846732374016 n.jpg

Que fait ce projet ?

Ce projet consiste à faire un détecteur de mouvement. En fonction de la distance de la personne ou de l'objet, une partie des Leds vont s'allumer.

Liste des composants

  • LEDS
  • capteurs de distance a ultrasons HC-SR04
  • résistances
  • fils
  • Cartons (pour l'esthétique)

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