Transmission d'une variable

Bonjour à tous,

J'utilise un clavier IR pour choisir un client.

Après, je veux récupérer le tableau correspondant à ce client dans une autre boucle, et je n'y arrive pas.

Voici mon code :

//Library
#include "IRremote.h"

#include "Wire.h"
#include "LiquidCrystal_I2C.h"

//Variable
int receiverPin = 9;
IRrecv irrecv(receiverPin);     
decode_results results;   

LiquidCrystal_I2C LCD(0x27,16,2); // définit le type d'écran lcd 16 x 2

const byte tabFils[] = {2, 3, 4, 5, 6, 7};
const byte NBFILS = sizeof tabFils;

int Thonon[18]={1, 3, 1, 3, 2, 4, 2, 4, 1, 3, 1, 3, 2, 4, 1, 3, 2, 4};
int Reyrieux[18]={5, 6, 2, 4, 1, 3, 0, 0, 0, 4, 2, 4, 1, 3, 0, 0, 1, 3};
int Lyon[18]={2, 5, 3, 6, 1, 4, 0, 0, 0, 0, 3, 6, 1, 4, 0, 0, 1, 4};
int Portugal[18]={1, 4, 3, 6, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4};
int Hongrie[18]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int Thevenin[18]={5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 1, 3, 0, 0, 0, 0};

void setup(){
  LCD.init(); // initialisation de l'afficheur
  LCD.backlight();
  Serial.begin(9600);
  
  Serial.println(F("IR Receiver Decoder")); 
  irrecv.enableIRIn(); // Start the receiver

    for (byte i = 0; i < NBFILS; i++)
    pinMode(tabFils[i], INPUT_PULLUP);

}

void convertIR() // convert IR code
{
 String client = "0";
 
 Serial.print(results.value);
 Serial.print(F(" -> "));
  switch(results.value)
  {
  case 0xFF30CF: Serial.println(F("1"));
        client = "Thonon";
        Serial.println(client);break;
  case 0xFF18E7: Serial.println(F("2"));
        client = "Reyrieux";
        Serial.println(client);break;
  case 0xFF7A85: Serial.println(F("3"));
        client = "Lyon";
        Serial.println(client);break;
  case 0xFF10EF: Serial.println(F("4"));
        client = "Portugal";
        Serial.println(client);break;
  case 0xFF38C7: Serial.println(F("5"));
        client = "Hongrie";
        Serial.println(client);break;
  case 0xFF5AA5: Serial.println(F("6"));
       client = "Thevenin";
       Serial.println(client);break;
  
  default: 
    Serial.println(F(" unknown  "));

  }
  delay(500);
}

void loop() {
  if (irrecv.decode(&results)){ // IR signal received?
    convertIR(); 
    irrecv.resume(); // receive the next value
  }
        int valeurx = Thonon[0];
        int valeury = Thonon[1];
        String client = "0";
        
  if (client == "Thonon"){
    valeurx = Thonon[4];
    valeury = Thonon[5];
  }

 if (client == "Reyrieux"){
    valeurx = Reyrieux[4];
    valeury = Reyrieux[5];
  }

   for (byte i = 0; i < NBFILS-1; i++)
  {
    pinMode(tabFils[i], OUTPUT);
    digitalWrite(tabFils[i], LOW);
    for (byte j = i + 1; j < NBFILS; j++)
    {
      if (digitalRead(tabFils[j]) == LOW)
      {
        

        if ((i + 1 == valeurx) and (j + 1 == valeury))
        {
          LCD.setCursor(0, 0);
          LCD.print("OK "); 
          LCD.print(client); 
          LCD.setCursor(0, 1);
          LCD.print(i + 1);
          LCD.print("-");
          LCD.print(j + 1);
          LCD.print(" connect");
          LCD.display();
          delay(5000);
          LCD.clear();
        }
        else
        {
          LCD.setCursor(0, 0);
          LCD.print("Erreur ");
          LCD.print(client);
          LCD.setCursor(0, 1);
          LCD.print("Connecter ");
          LCD.print(valeurx);
          LCD.print("-");
          LCD.print(valeury);
          delay(5000);
          LCD.display();
          LCD.clear();
          
        }
        
      }
    }
    pinMode(tabFils[i], INPUT_PULLUP);
  }
  delay(2000);
}

Le client que je récupère dans mon void ConvertIR, je n'arrive pas à le trnasmettre à mon void loop.

Comment faire ?

Merci.

Votre

N’est pas globalement définie (vous la définissez deux fois) donc dans la fonction elle est est initialisé mais ce n’est pas la même variable que dans le corps du programme (lisez des docs sur la portée des variables - scope en anglais)

Ah oui en effet, j'en avois un de trop.