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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| #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() {
float distance_mm = mesureMillimetres();
if(distance_mm < seuil ){ //------si la distance est inférieur à celle mur - capteur
while(distance_mm < seuil) // Tant que l'obstacle est devant le détecteur on attend
{
distance_mm = mesureMillimetres();
}
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(" Nbre passages : ");
Serial.println(nbrLED);
//----- On allume la led pendant 1 séconde
displayLed();
lcd.setCursor(0,0);
lcd.setCursor(0,1);
lcd.print(" Nbre passages : " + String(nbrLED));
delay(2000);
}
}
float mesureMillimetres()
{
/* 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é */
return measure / 2.0 * SOUND_SPEED;
} |
Partager