commande led par IR

Merci pour votre réponse. J’avoue que je comprends bien volontiers vos remarques mais mon manque d’expériences ne me permet pas d’écrire du code comme vous en parlez.
En fait je tente avec beaucoup de rigueur d’intégrer vos remarques dans mes lignes mais le compilateur me renvois des erreurs qui je pense vous semblerons ridicules

Voici le message d’erreur et dessous le code

Arduino : 1.8.1 (Windows 10), Carte : "Arduino/Genuino Uno"

C:\Users\Stephan\Documents\Arduino\programme_eclairage_voiture-version_3\programme_eclairage_voiture-version_3.ino: In function 'void loop()':

C:\Users\Stephan\Documents\Arduino\programme_eclairage_voiture-version_3\programme_eclairage_voiture-version_3.ino:36:7: warning: large integer implicitly truncated to unsigned type [-Woverflow]

       case Phare:// ************** Allume les phares ************** //

       ^

programme_eclairage_voiture-version_3:40: error: assignment of read-only location 'itsONled[1]'

           itsONled[1] = LOW;

                       ^

programme_eclairage_voiture-version_3:43: error: assignment of read-only location 'itsONled[1]'

           itsONled[1] = HIGH;

                       ^

C:\Users\Stephan\Documents\Arduino\programme_eclairage_voiture-version_3\programme_eclairage_voiture-version_3.ino:46:7: warning: large integer implicitly truncated to unsigned type [-Woverflow]

       case ClignoGauche:// ************** Allume le clignotant gauche ************** //

       ^

programme_eclairage_voiture-version_3:50: error: assignment of read-only location 'itsONled[4]'

           itsONled[4] = LOW;

                       ^

programme_eclairage_voiture-version_3:53: error: assignment of read-only location 'itsONled[4]'

           itsONled[4] = LOW;

                       ^

programme_eclairage_voiture-version_3:55: error: assignment of read-only location 'itsONled[2]'

         itsONled[2] = !itsONled[2]; //inversel'étatdelindicateur

                     ^

C:\Users\Stephan\Documents\Arduino\programme_eclairage_voiture-version_3\programme_eclairage_voiture-version_3.ino:60:7: warning: large integer implicitly truncated to unsigned type [-Woverflow]

       case FeuxStop:// ************** Allume les stop ************** //

       ^

programme_eclairage_voiture-version_3:64: error: assignment of read-only location 'itsONled[3]'

           itsONled[3] = LOW;

                       ^

programme_eclairage_voiture-version_3:67: error: assignment of read-only location 'itsONled[3]'

           itsONled[3] = HIGH;

                       ^

C:\Users\Stephan\Documents\Arduino\programme_eclairage_voiture-version_3\programme_eclairage_voiture-version_3.ino:70:7: warning: large integer implicitly truncated to unsigned type [-Woverflow]

       case Clignodroite:// ************** Allume le clignotant droit ************** //

       ^

programme_eclairage_voiture-version_3:74: error: assignment of read-only location 'itsONled[2]'

           itsONled[2] = LOW;

                       ^

programme_eclairage_voiture-version_3:77: error: assignment of read-only location 'itsONled[2]'

           itsONled[2] = LOW;

                       ^

programme_eclairage_voiture-version_3:79: error: assignment of read-only location 'itsONled[4]'

         itsONled[4] = !itsONled[4]; //inversel'étatdelindicateur

                     ^

C:\Users\Stephan\Documents\Arduino\programme_eclairage_voiture-version_3\programme_eclairage_voiture-version_3.ino:85:7: warning: large integer implicitly truncated to unsigned type [-Woverflow]

       case ToutEteindre:// ************** Tout eteindre  ************** //

       ^

programme_eclairage_voiture-version_3:91: error: assignment of read-only location 'itsONled[1]'

         itsONled[1] = 0;

                     ^

programme_eclairage_voiture-version_3:92: error: assignment of read-only location 'itsONled[2]'

         itsONled[2] = 0;

                     ^

programme_eclairage_voiture-version_3:93: error: assignment of read-only location 'itsONled[3]'

         itsONled[3] = 0;

                     ^

programme_eclairage_voiture-version_3:94: error: assignment of read-only location 'itsONled[4]'

         itsONled[4] = 0;

                     ^

C:\Users\Stephan\Documents\Arduino\programme_eclairage_voiture-version_3\programme_eclairage_voiture-version_3.ino:97:7: warning: large integer implicitly truncated to unsigned type [-Woverflow]

       case Warning:// ************** warning ************** //

       ^

programme_eclairage_voiture-version_3:102: error: assignment of read-only location 'itsONled[2]'

         itsONled[2] = HIGH;

                     ^

programme_eclairage_voiture-version_3:103: error: assignment of read-only location 'itsONled[4]'

         itsONled[4] = HIGH;

                     ^

Plusieurs bibliothèque trouvées pour "IRremote.h"
Utilisé : C:\Users\Stephan\Documents\Arduino\libraries\IRremote
Non utilisé : C:\Program Files (x86)\Arduino\libraries\RobotIRremote
exit status 1
assignment of read-only location 'itsONled[1]'

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
#include<IRremote.h>
int RECV_PIN = 11;
const byte led1 = 2;
const byte led2 = 4;
const byte led3 = 7;
const byte led4 = 6;
const byte itsONled[] = {0, 0, 0, 0, 0};
byte ledState = LOW;
byte ledStatew = LOW;
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
const unsigned long interval = 500;

#define Phare 0xFF30CF//bouton1 Phare
#define ClignoGauche 0xFF18E7//bouton2 Clignotant gauche
#define FeuxStop 0xFF7A85//bouton3 Feux stop 
#define Clignodroite 0xFF10EF//bouton4 Clignotants droite
#define ToutEteindre 0xFF38C7//bouton5 switch off
#define Warning 0xFF5AA5//bouton5 Warning
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
}
void loop()
{
  if (irrecv.decode(&results)) {
    unsigned int value = results.value;
    switch (value) {
      case Phare:// ************** Allume les phares ************** //
        Serial.println("Phare");
        if (itsONled[1] == HIGH) {
          digitalWrite(led1, LOW);
          itsONled[1] = LOW;
        } else {
          digitalWrite(led1, HIGH);
          itsONled[1] = HIGH;
        }
        break;
      case ClignoGauche:// ************** Allume le clignotant gauche ************** //
        Serial.println("Clignotant gauche");
        if (itsONled[4] == HIGH) {
          digitalWrite(led4, LOW);
          itsONled[4] = LOW;
        } else {
          digitalWrite(led4, LOW);
          itsONled[4] = LOW;
        }
        itsONled[2] = !itsONled[2]; //inversel'étatdelindicateur
        if (!itsONled[2])
          digitalWrite(led2, LOW);

        break;
      case FeuxStop:// ************** Allume les stop ************** //
        Serial.println("Feux stop");
        if (itsONled[3] == HIGH) {
          digitalWrite(led3, LOW);
          itsONled[3] = LOW;
        } else {
          digitalWrite(led3, HIGH);
          itsONled[3] = HIGH;
        }
        break;
      case Clignodroite:// ************** Allume le clignotant droit ************** //
        Serial.println("Clignotant droite");
        if (itsONled[2] == HIGH) {
          digitalWrite(led2, LOW);
          itsONled[2] = LOW;
        } else {
          digitalWrite(led2, LOW);
          itsONled[2] = LOW;
        }
        itsONled[4] = !itsONled[4]; //inversel'étatdelindicateur
        if (!itsONled[4])
          digitalWrite(led4, LOW);

        break;

      case ToutEteindre:// ************** Tout eteindre  ************** //
        Serial.println("switch off");
        digitalWrite(led1, LOW); 
        digitalWrite(led2, LOW);
        digitalWrite(led3, LOW);
        digitalWrite(led4, LOW);
        itsONled[1] = 0;
        itsONled[2] = 0;
        itsONled[3] = 0;
        itsONled[4] = 0;

        break;
      case Warning:// ************** warning ************** //
        Serial.println("Warning");

        digitalWrite(led2, LOW);
        digitalWrite(led4, LOW);
        itsONled[2] = HIGH;
        itsONled[4] = HIGH;
        break;


    }
    Serial.println(value);
    irrecv.resume();
  }
  if (itsONled[2])
    ledclignote();
  if (itsONled[4])
    ledwarning();

}
void ledclignote()//ma fonction clignote

{
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis1 >= interval) {
    previousMillis1 = currentMillis;

    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }

    digitalWrite(led2, ledState);
  }
}
void ledwarning()//ma fonction clignote

{
  unsigned long currentMillis2 = millis();

  if (currentMillis2 - previousMillis2 >= interval) {
    previousMillis2 = currentMillis2;

    if (ledStatew == LOW) {
      ledStatew = HIGH;
    } else {
      ledStatew = LOW;
    }

    digitalWrite(led4, ledStatew);
  }
}

oops j'ai eu la main lourde dans les copier coller bien sûr le tableau itsONled ne doit pas être déclaré constant puisque vous le modifiez

[color=red][s]const[/s][/color] byte itsONled[] = {0, 0, 0, 0, 0};

Aussi pour éviter les warning il vaut mieux faire un #define Phare 0xFF30CF[color=red]ul[/color] //bouton1 Phare pour bien marquer que ce sont des [color=red]u[/color]nsigned [color=red]l[/color]ong (idem pour les autres)

bon encore quelques warning mais cela fonctionne

je m’interroge sur votre suggestion concernant la possibilité de concentrer l’état du clignotement

Cligno G cligno D et warning

Pour l’instant je cherche à comprendre pourquoi suivant le sens des appels bout 1 bout 2 etc, j’ai un coup un warning synchro et un coup une voiture de police (hihihi)

#include<IRremote.h>
int RECV_PIN = 11;
const byte led1 = 2;
const byte led2 = 4;
const byte led3 = 7;
const byte led4 = 6;
byte itsONled[] = {0, 0, 0, 0, 0};
byte ledState = LOW;
byte ledStatew = LOW;
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
const unsigned long interval = 500;

#define Phare 0xFF30CFul //bouton1 Phare
#define ClignoGauche 0xFF18E7ul//bouton2 Clignotant gauche
#define FeuxStop 0xFF7A85ul//bouton3 Feux stop 
#define Clignodroite 0xFF10EFul//bouton4 Clignotants droite
#define ToutEteindre 0xFF38C7ul//bouton5 switch off
#define Warning 0xFF5AA5ul//bouton5 Warning
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
}
void loop()
{
  if (irrecv.decode(&results)) {
    unsigned int value = results.value;
    switch (value) {
      case Phare:// ************** Allume les phares ************** //
        Serial.println("Phare");
        if (itsONled[1] == HIGH) {
          digitalWrite(led1, LOW);
          itsONled[1] = LOW;
        } else {
          digitalWrite(led1, HIGH);
          itsONled[1] = HIGH;
        }
        break;
      case ClignoGauche:// ************** Allume le clignotant gauche ************** //
        Serial.println("Clignotant gauche");
        if (itsONled[4] == HIGH) {
          digitalWrite(led4, LOW);
          itsONled[4] = LOW;
        } else {
          digitalWrite(led4, LOW);
          itsONled[4] = LOW;
        }
        itsONled[2] = !itsONled[2]; //inversel'étatdelindicateur
        if (!itsONled[2])
          digitalWrite(led2, LOW);

        break;
      case FeuxStop:// ************** Allume les stop ************** //
        Serial.println("Feux stop");
        if (itsONled[3] == HIGH) {
          digitalWrite(led3, LOW);
          itsONled[3] = LOW;
        } else {
          digitalWrite(led3, HIGH);
          itsONled[3] = HIGH;
        }
        break;
      case Clignodroite:// ************** Allume le clignotant droit ************** //
        Serial.println("Clignotant droite");
        if (itsONled[2] == HIGH) {
          digitalWrite(led2, LOW);
          itsONled[2] = LOW;
        } else {
          digitalWrite(led2, LOW);
          itsONled[2] = LOW;
        }
        itsONled[4] = !itsONled[4]; //inversel'étatdelindicateur
        if (!itsONled[4])
          digitalWrite(led4, LOW);

        break;

      case ToutEteindre:// ************** Tout eteindre  ************** //
        Serial.println("switch off");
        digitalWrite(led1, LOW); 
        digitalWrite(led2, LOW);
        digitalWrite(led3, LOW);
        digitalWrite(led4, LOW);
        itsONled[1] = 0;
        itsONled[2] = 0;
        itsONled[3] = 0;
        itsONled[4] = 0;

        break;
      case Warning:// ************** warning ************** //
        Serial.println("Warning");

        digitalWrite(led2, LOW);
        digitalWrite(led4, LOW);
        itsONled[2] = HIGH;
        itsONled[4] = HIGH;
        break;


    }
    Serial.println(value);
    irrecv.resume();
  }
  if (itsONled[2])
    ledclignote();
  if (itsONled[4])
    ledwarning();

}
void ledclignote()//ma fonction clignote

{
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis1 >= interval) {
    previousMillis1 = currentMillis;

 ledState = (ledState == HIGH) ? LOW : HIGH;
    digitalWrite(led2, ledState);
  }
}
void ledwarning()//ma fonction clignote

{
  unsigned long currentMillis2 = millis();

  if (currentMillis2 - previousMillis2 >= interval) {
    previousMillis2 = currentMillis2;

    ledStatew = (ledStatew == HIGH) ? LOW : HIGH;

    digitalWrite(led4, ledStatew);
  }
}
[/code}

je n’arrive pas à trouver pourquoi et comment faire pour synchroniser les led sur l’action warning