Bonjour à tous,
je cherche a créer le programme suivant:
-2 capteur et 3 leds
la led 3 est toujours allumées
quand le capteur 1 est activé pendant un minimum de 2secondes et le capteur 2 non activé, les leds 1 et 3 s'allument pendant 3 secondes
et quand les 2 capteurs sont activés pendant un minimum toujours de 2 secondes, les leds 2 et 3 s'allument pendant 3 secondes.
Sans les 2 secondes, j'ai créé ce programme, sauf que la led 3 reste allumée tout le temps (ça c'est normal), mais les leds 2 et 3 clignote 3 secondes, chacune leur tour, et les capteurs n'agissent en rien dans le système.
const int capteur1 = 20;
const int capteur2 = 21;
const int led1 = 23;
const int led2 = 24;
const int led3 = 25;
int etatcapteur1;
int etatcapteur2;
void setup () {
pinMode (capteur1, INPUT);
pinMode (capteur2, INPUT);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
etatcapteur1 = LOW;
etatcapteur2 = LOW;
}
void loop () {
digitalWrite (led3, HIGH);
digitalWrite (led2, LOW);
digitalWrite (led1, LOW);
etatcapteur1 = digitalRead(capteur1);
etatcapteur2 = digitalRead(capteur2);
if(etatcapteur1 == HIGH) {
digitalWrite (led1, HIGH);
digitalWrite (led2, LOW);
digitalWrite (led3, HIGH);
delay(3000);
digitalWrite (led1, LOW);
}
if(etatcapteur2 == HIGH) {
digitalWrite (led3, HIGH);
digitalWrite (led2, HIGH);
delay(3000);
digitalWrite (led3, LOW);
digitalWrite (led2, LOW);
}
else {
digitalWrite (led3, HIGH);
}
}
et en rajoutant les 2 secondes, ça donne ça: mais toujours rien ne se passe
const int capteur1 = 20;
const int capteur2 = 21;
const int led1 = 23;
const int led2 = 24;
const int led3 = 25;
long tempsdetec = 2000;
boolean variable = false;
boolean etatcapteur1;
boolean etatcapteur2;
unsigned long debutactif;
void setup () {
pinMode (capteur1, INPUT);
pinMode (capteur2, INPUT);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
}
void loop () {
etatcapteur1 = digitalRead(capteur1);
digitalWrite (led3, HIGH); //indication que la machine est en marche
digitalWrite (led2, LOW);
digitalWrite (led1, LOW);
if(etatcapteur1==HIGH) {
debutactif = millis();
variable = true;
}
etatcapteur1 = digitalRead(capteur1);
etatcapteur2 = digitalRead(capteur2);
if((variable == true) && (etatcapteur2 == HIGH)) {
if((millis() >= tempsdetec) && (etatcapteur2 == LOW)) {
digitalWrite (led1, HIGH);
digitalWrite (led2, LOW);
digitalWrite (led3, HIGH);
delay(3000);
digitalWrite (led1, LOW);
}
if((millis() >= tempsdetec) && (etatcapteur2 == LOW)) {
digitalWrite (led2, HIGH);
digitalWrite (led3, HIGH);
delay(3000);
digitalWrite (led2, LOW);
}
}
}
Si quelqu'un pourrait m'aider pour trouver les erreurs (je suis débutant)
Merci d'avance, bonne soirée!
[/quote]