• Post category:Fort
  • Post comments:0 commentaire
  • Post last modified:mars 15, 2022
  • Temps de lecture :8 min de lecture

Faire varier un barregraphe à l’aide d’un HC-SR04 capteur à Ultrason (structure for) avec un Arduino Uno

Niveau APPRENTISSAGE :   Fort

 

    Prérequis :

Matériel :

  • 1 x Carte Arduino
  • 9 x Résistances 220 ohms
  • 9 x Leds
  • 1 x HC-SR04 capteur à Ultrason
  • Fils de connexion
  • 1 x Breadboard

Version IDE :

 

 

Vidéo de démonstration :

 

Schéma de câblage :

 

 

 

Code :

// La broche numérique 11 est reliée à trig HC-SR04. On lui donne le nom trigPin.
int trigPin = 11;
// La broche numérique 12 est reliée à echo HC-SR04. On lui donne le nom echoPin.
int echoPin = 12;
// Déclaration variable duration qui va servir à stocker une valeur au format float.
float duration;
// Déclaration variable distance qui va servir à stocker une valeur au format float.
float distance;
// Déclaration variable nombreled qui va servir à stocker une valeur au format int.
// Elle prend la valeur de 9 équivalant au nombre de LED
int nombreled = 9;
// Déclaration d'un tableau de variable ledPins qui va servir à stocker des valeurs au format int.
// On remplit le tableau avec les numéros des broches numériques utilisées pour les LEDS
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};

void setup() {
  // Définit trigPin comme sortie.
  pinMode(trigPin, OUTPUT);
  // Définit echoPin comme sortie.
  pinMode(echoPin, INPUT);
  // On utilise une boucle for pour déclarer les sorties
  // On initialise une variable int Led pour qu’elle débute de 0
  // Tant que la condition est Vrai Led < nombreled on répète les actions entre {} de la boucle for
  // Et on incrémente Led++.
  for (int Led = 0; Led < nombreled; Led++) {
    // Définit ledPins[Led] comme sortie.
    pinMode(ledPins[Led], OUTPUT);
  }
}

void loop() {
  // Met la broche numérique trigPin sur ON
  digitalWrite(trigPin, HIGH);
  // On attend 10 millisecondes
  delayMicroseconds(10);
  // Met la broche numérique trigPin sur OFF
  digitalWrite(trigPin, LOW);
  // On lit le temps d'impulsion sur echoPin et on stock la valeur dans la variable duration
  duration = pulseIn(echoPin, HIGH);
  // On calcule la distance par rapport à la durée de l'impulsion 
  // Puis on stocke la valeur dans la variable distance
  distance = duration * 0.034 / 2;
  // La valeur distance Min = 5, Max = 40 et mappée à Min = nombreled soit 9, Max = 0
  // puis est stockée dans la variable ledon au format int.
  int ledon = map(distance, 5, 40, nombreled, 0);
  // On utilise une boucle for pour définir état de sortie des Leds soit HIGH ou LOW
  // On initialise une variable int Led pour qu’elle débute de 0
  // Tant que la condition est Vrai Led < nombreled on répète les actions entre {} de la boucle for
  // Et on incrémente Led++.
  for (int Led = 0; Led < nombreled; Led++) {
    // Si Led < ledon on exécute les actions entre {}
    if (Led < ledon) {
      // Met la broche numérique stockée dans ledPins[Led] sur ON
      digitalWrite(ledPins[Led], HIGH);
    }
    // Sinon on exécute les actions entre {}
    else {
      // Met la broche numérique stockée dans ledPins[Led] sur OFF
      digitalWrite(ledPins[Led], LOW);
    }
  }
  // On attend 150 millisecondes
  delay(150);
}

 

Simulation TINKERCAD :

 


+ Infos sur le langage utilisé :

1. Fonctions
2. Variables
3. Stucture

 

Laisser un commentaire