Bonsoir les Arduinautes,
Y aurait-il quelqu'un qui puisse me dire pourquoi mon code ne fonctionne pas comme je voudrais,
malgré que je travaille dessus depuis 3 jours.
Ce que je cherche, c'est que si le détecteur a ultra-sons détecte un obstacle, une led s'allume pendant 3 secondes , puis s'éteint, en utilisant la fonction millis,car je voudrais que mon code ne soit pas bloquant.
Bien sur, j'ai regarder " le sketch, blink an LED. " , mais il marche pour une durée de l'intervalle, et non une durée d'allumage de ma led..; J'ai essayé de le manipuler dans tous les sens , mais ça veut pas >:(
Aussi je fais appel à vous.
Merci d'avance
Mon code:
#include <Wire.h>
#include <NewPing.h>
const int ledPin = 11;
int ledState = HIGH; // ledState HIGH correspondant à LED ETEINTE
int trig1 = 4;
int echo1 = 5;
long lecture_echo;
long cm1;
// État d'activation de la tempo
int tempoActive = 0;
// Temps à l'activation de la tempo
unsigned long tempoDepart = 0;
void setup() {
Serial.begin(9600);
pinMode(trig1, OUTPUT);
digitalWrite(trig1, LOW);
pinMode(echo1, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
lecture_echo = pulseIn(echo1, HIGH);
cm1 = lecture_echo / 58;
Serial.print("Distance : ");
Serial.println(cm1);
delay(20);
if (cm1 < 11) {
ledState = LOW;
}
// Alors on active la temporisation
tempoActive = 1;
tempoDepart = millis();
// Si la temporisation est active,
if ( tempoActive ) {
// Et si il s'est écoulé 3 secondes,
if ( ( millis() - tempoDepart ) >= 3000 ) {
// Et on désactive la temporisation pour ne pas afficher ce message une seconde fois
tempoActive = 0;
}
}
else ledState = HIGH;
}