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

Afficher la valeur HC-SR04 sur un affichage LED à 4 chiffres et 7 segments avec un Arduino Uno

Niveau APPRENTISSAGE :   Fort

 

    Prérequis :

Matériel :

  • 1 x Carte Arduino Uno
  • 1 x Afficheur 7 segments 4 digits ( cathode commune )
  • 1 x HC-SR04 capteur à Ultrason
  • 8 x Résistances 330Ω
  • Fils de connexion
  • 1 x Breadboard

Version IDE :

Bibliothèque :

 

 

Vidéo de démonstration :

 

Schéma de câblage de l’Emetteur :

 

Code :

// Inclure le code de la bibliothèque:
#include "SevSeg.h"
SevSeg myDisplay;
// La broche Analogique A0 est reliée à trig HC-SR04. On lui donne le nom trigPin.
const int trigPin = A0;
// La broche Analogique A1 est reliée à echo HC-SR04. On lui donne le nom echoPin.
const int echoPin = A1;
// 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 int.
int distance;
// Déclaration d'un tableau Affvaleurs qui va servir à stocker des valeurs au format char.
char Affvaleurs[4];

void setup() {
  //Défini si votre afficheur à Segments est soit à cathode commune, soit à anode commune
  int displayType = COMMON_CATHODE;
  // Déclare quelles broches sont connectées aux chiffres.
  int digit1 = 2;
  int digit2 = 3;
  int digit3 = 4;
  int digit4 = 5;
  // Déclare quelles broches sont connectées aux segments.
  int segA = 6;
  int segB = 7;
  int segC = 8;
  int segD = 9;
  int segE = 10;
  int segF = 11;
  int segG = 12;
  int segDP = 13;
  // Défini la taille de l'affichage 1, 2 ou 4 chiffres.
  int numberOfDigits = 4;
  myDisplay.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP);
  // Régle l'affichage sur un niveau de luminosité de 100 %
  myDisplay.SetBrightness(100);
  // Définit trigPin comme sortie
  pinMode(trigPin, OUTPUT);
  // Définit echoPin comme entrée.
  pinMode(echoPin, INPUT);
}

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;
  // Si distance > 16 on exécute les actions entre {}
  if (distance > 16 ) {
    // Imprime ---- sur afficheur à Segments.
    myDisplay.DisplayString("----", 0);
  }
  // Sinon on exécute les actions entre {}
  else {
    //Convertie la valeur de la variable distance en chaîne de caractère et la stock dans le tableau Affvaleurs
    sprintf(Affvaleurs, "%04d", distance);
    // Imprime les valeurs du tableau Affvaleurs sur afficheur à Segments.
    myDisplay.DisplayString(Affvaleurs, 0);
  }
}

 


+ Infos sur le langage utilisé :

1. Fonctions
2. Variables
3. Stucture

 

Laisser un commentaire