télécommande IR utilisée comme interupteur

Bonjour le forum,

je m'explique, j'ai fais un programme sur une arduino uno avec un récepteur IR et un shield 4 relais.
le programme fonctionne bien à un détail pré, les relais s'activent bien quand les codes IR des touches est lu, mais la télécommande se comporte comme un bouton poussoir et j'aimerai avoir la possibilité que les relais reste actif même si je n'appuis plus sur la touche de la télécommande.
j'espère que je suis clair.

#include <IRremote.h>

int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
irrecv.enableIRIn();//debut de reception
}

void loop() {
  
if (irrecv.decode(&results)) {
if(results.value==0x61706897)digitalWrite(4,HIGH);//bouton A
if(results.value==0x6170E817)digitalWrite(5,HIGH);//bouton B
if(results.value==0x617018E7)digitalWrite(6,HIGH);//bouton C
if(results.value==0x61709867)digitalWrite(7,HIGH);//bouton D

delay(500);

digitalWrite(4,LOW);//fonctionne comme un bouton poussoir
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);

irrecv.resume();
}
delay(100);

}

Wrong forum. Write in English here

You have to remove the delay(500) and setting the relays to LOW, and check the relay state upon receiving an IR code to toggle the relay pin (if it’s HIGH go to LOW, if it’s LOW go to HIGH)

const byte pinRelayA = 4; 
const byte pinRelayB = 5; 
const byte pinRelayC = 6; 
const byte pinRelayD = 7; 

const uint32_t IRCodeA = 0x61706897;
const uint32_t IRCodeB = 0x6170E817; 
const uint32_t IRCodeC = 0x617018E7;
const uint32_t IRCodeD = 0x61709867;

....

if (irrecv.decode(&results)) {
  switch(results.value) {
    case IRCodeA: togglePin(pinRelayA); break ;  //bouton A
    case IRCodeB: togglePin(pinRelayB); break;   //bouton B
    case IRCodeC: togglePin(pinRelayC); break;   //bouton C
    case IRCodeD: togglePin(pinRelayD); break;   //bouton D
  }
  irrecv.resume();
}

I let you write togglePin()
You will have to handle long press (ie repeated IRCode) possibly as well

——
(J’ai demandé au modo de déplacer votre message)