Bonjour, je programme sous arduino et mon projet utilise une télécommande IR, qui contrôle un attiny 85, celui-ci active 2 relais séparément.
Se que je veut faire:
-lorsque j'appuie sur un bouton de la télécommande un relais doit se fermer et s'ouvrir seulement quand je lâche le bouton
En fait je galère avec les if/else et les delay, mon problème est le même qu'un montage classique arduino avec un bouton poussoir, mais moi j'ai la télécommande, et le fait de recevoir des signaux de la télécommande et non d'un bouton change le programme (a moins que je ne me trompe et dans se cas c'est la même chose), voici mon programme
Je précise qu'avec ce programme le relais 1 s'active et se désactive a chaque nouvel appuie et le relais 2 s'active 40millisecond et se désactiveCode:#include <IRremote.h> #include <IRremoteInt.h> // Ce n'est pas la librairie standart IRremote mais celle adapté pour les attiny... int before; // déclare l'état actuel pour le changer plus tard int relay1=2; // pin 2 de l'attiny sur le relais 1 int relay2=0; // même chose int RECV_PIN = 3; //pin sortie signal du recepteurIR sur broche 3 de l'attiny IRrecv irrecv(RECV_PIN); decode_results results; void setup(){ irrecv.enableIRIn(); // start receiver before=0; //relay maintenant a 0 pinMode(relay1,OUTPUT); pinMode(relay2,OUTPUT); } void loop() { if (irrecv.decode(&results)) { //------------------------------------------------------------------------------------------ RELAIS 1 if (results.value==0xD32){ //active/désactive le relay if(before==0){ // si le relay était désactivé, maintenant il est activé digitalWrite(relay1,HIGH); // le relay s'active before=1; //le relais est maintenant actif delay(40); } else{ digitalWrite(relay1,LOW); //si le relay était activé, maintenant il est désactivé before=0; delay(10); } } if (results.value==0x532){ //active/désactive le relay if(before==0){ // si le relay était désactivé, maintenant il est activé digitalWrite(relay1,HIGH); before=1; //le relais est maintenant actif delay(40); } else{ digitalWrite(relay1,LOW); //si le relay était activé, maintenant il est désactivé before=0; delay(10); } } //------------------------------------------------------------------------------------------ RELAIS 2 if (results.value==0xD34){ if(before==0){ digitalWrite(relay2,HIGH); before=1; delay(40); digitalWrite(relay2,LOW); before=0; delay(10); }} if (results.value==0x534){ if(before==0){ digitalWrite(relay2,HIGH); before=1; delay(40); digitalWrite(relay2,LOW); before=0; delay(10); }} irrecv.resume(); }}
Merci par avance de votre aide, j’espère que ma question est claire
-----