Bonjour à tous,
Je suis en train de programmer une carte Uno R3 avec un detecteur de mouvement pour allumer un ruban led en éclairage indirect.
J'ai cependant un probleme, j arrive bien à detecter, récuperer les donnees mais je n arrive pas à coder de cette façon :
Quand il detecte et que la lampe n est pas allumé, elle s allume
Quand il ne detecte rien mais que s est allumé ça ne change rien
Quand il detecte et que s est allumé, ça s'éteint.
En résumé la partie code : (je ne l'ai pas sous la main)
etatlampe = 0;
If ( detection == HIGH && etatlampe == 0) {
etatlampe = HIGH; }
Else if ( detection == LOW && etatlampe == 1 ) {
Etatlampe = HIGH; }
Else if ( detection == HIGH && etatlampe == 1 ){
Etatlampe = LOW }
essaye ça:
tout d'abord tu déclare au début de ton prog boolean ar=false; il servira d'anti-rebond de ta détection
puis dans le loop tu fait : If ( detection ) {if (!ar) {ar=true; etatlampe=!etatlampe;}} else ar=false; ce qui à pour effet d'inverser etatlampe à chaque détection
Bonjour et merci de vos réponses,
j'utilise bien digitalWrite Jambe, voici mon code refait avec ton morceau fifi82:
int decompte = 0;
int ledPin = 13;
int inputPin = 5;
int val = LOW;
int lastval = 0;
boolean ar=false;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin);
if (val == HIGH && !ar) {
decompte++;
digitalWrite(ledPin, HIGH);
Serial.println("La lampe s'allume !");
Serial.println(decompte);
lastval = !lastval;
}
else { ar=false;
Serial.println("La lampe s'eteint");
}}
Je viens de comprendre pourquoi ça ne fonctionne pas bien ... j'ai un module de detection CSR501 avec un temporisateur dessus du coup ... Ce qui bloque à chaque fois mon compte avec un délais réglable sur le module. Je viens de commander un module FC-51 d'évitement d'obstacle, et là à mon avis je n'aurais plus ce probleme de timer.
J'ai acheté un capteur de proximité, beaucoup plus simple et j'ai compris que mes modules ne m'envoyés pas forcement les données que je pensais.
Là ça fonctionne parfaitement ! Je peux enfin allumé mon ruban led.