Bonjour,

j'ai fais un montage avec une carte uno et un hc sr 04, mon programme fonctionne bien et le comptage de passages est bon la led s"éclaire à chaque passage mais je voudrais y ajouter un écran 16x2 en i2c

Je vous propose mon code pour avis

En vous remerciant

Stéphanie

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <LiquidCrystal_I2C.h> //LCD i2c library
#define I2C_ADDR 0x27
LiquidCrystal_I2C lcd(I2C_ADDR,16,2);   
 
 
 
const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3;    // Broche ECHO
const byte LED = 7;
const int seuil = 1000;
int nbrLED=0;
/* 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;
int start=0;
void displayLed(){ //---------le clignotement du led aprés détéction
  digitalWrite(LED,HIGH);
  delay(1000);
  digitalWrite(LED,LOW);
  }
 
void setup() {
   lcd.init();
 
   lcd.setBacklight(HIGH);
  lcd.setBacklight(LOW);      // L'écran s'éteint 1 seconde preuve que l'adresse est OK
  delay(1000);
  lcd.setBacklight(HIGH);
 
  /* Initialise le port série */
  Serial.begin(9600);
 
  /* Initialise les broches */
  pinMode(TRIGGER_PIN, OUTPUT);
  pinMode(LED, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  //-------initialisation des pins 
  digitalWrite(LED , LOW); //--------je met la led à 0
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
 //--------Attente de l'établissement de la communication serie 
  Serial.print("Initialisation du capteur ...");
  delay(1000);
  Serial.println("  Termine.");
  Serial.println("Capteur ultrason en écoute (Essaie de passer pour voir si je ne te détecte pas ) :)");
}
 
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 <= seuil ){ //------si la distance est inférieur à celle mur - capteur
    nbrLED++;
      /* 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.print(F("m)"));
  Serial.print(" Nombre de passages : ");
  Serial.println(nbrLED);
  //----- On allume la led pendant 1 séconde 
    displayLed();
   }
 
}