Alors voilà j'aimerais allumer une led (pour l'instant que je remplacerais plus tard par un bandeau led) lorsque je passe ma main à moins de 40 cm devant le capteur et que lorsque je l'enlève, que la led puisse rester allumé 30 sec et qu'elle s'éteigne par la suite. Si jamais je repasse ma main avant la fin des 30 sec, je voudrais que le delay recommence son décompte à partir de 30 sec quand je la re-enlève.
Voici le programme que j'ai fait, la led s'allume directement mais ne s'éteint pas.
int LedGreen = 13;
int CapteurUltrasonTrig = 12;
int CapteurUltrasonEcho = 11;
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;
int led = 0;
void setup(){
pinMode(LedGreen, OUTPUT);
pinMode(CapteurUltrasonTrig, OUTPUT);
pinMode(CapteurUltrasonEcho, INPUT);
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop(){
digitalWrite(CapteurUltrasonTrig, HIGH);
delayMicroseconds(10);
digitalWrite(CapteurUltrasonTrig, LOW);
int pulseLength = pulseIn(CapteurUltrasonEcho, HIGH);
int width = pulseLength/58; //d'après la datasheet, permet de convertir en cm
led = digitalRead(LedGreen);
if (LedGreen == HIGH && width > 40){
delay(4000);
digitalWrite(LedGreen, LOW);
}
if (width < 40){
digitalWrite(LedGreen, HIGH);
}
}
int LedGreen = 13;
int CapteurUltrasonTrig = 12;
int CapteurUltrasonEcho = 11;
unsigned long debut=0;
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;
int led = 0;
void setup(){
pinMode(LedGreen, OUTPUT);
pinMode(CapteurUltrasonTrig, OUTPUT);
pinMode(CapteurUltrasonEcho, INPUT);
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(CapteurUltrasonTrig, HIGH);
delayMicroseconds(10);
digitalWrite(CapteurUltrasonTrig, LOW);
int pulseLength = pulseIn(CapteurUltrasonEcho, HIGH);
int width = pulseLength/58; //d'après la datasheet, permet de convertir en cm
//led = digitalRead(LedGreen);
if (width > 40)
{
debut=millis();
digitalWrite(LedGreen, HIGH);//allumer
}
else
{
if ((millis()-debut)>30000)
{
digitalWrite(LedGreen, LOW);//eteindre
}
}
}