Problème biblio UIPEthernet, ordres décalés +1

Bonjour à tous,

j’ai un soucis avec un montage à base de Nano et d’un ethernet Shield équipé d’un ENC28J60 avec biblio UIPEthernet. Le même prog testé avec UNO et W5100, fonctionne correctement(en utilisant bien entendu la bonne biblio)

Le programme permet de controler une Freebox Revolution à l’aide d’une télécommande IR et envoie les ordres en IP.

Le problème que je rencontre, c’est que les ordres sont décalés de + 1. Je m’explique:

-je presse sur la touche “1”, la Freebox ne réagit pas
-je presse sur la touche “2”, la Freebox reçoit “1”
-je presse sur la touche “3”, la Freebox reçoit “2”

  • etc…

je précise que ce décalage n’apparaît pas au moniteur série, ce qui me laisse penser que le décalage intervient bien au niveau du socket IP

merci d’avance pour votre aide

voici le code

#include <IRremote.h>
#include <SPI.h>
//#include <Ethernet.h>              //utilisé dans le cas d'un UNO avec W5100
#include <UIPEthernet.h>

//Initialisation du reseau
byte mac[] = {  0x80, 0xB4, 0x04, 0x14, 0x57, 0x80 }; // MacID de l'Ethernet Shield
byte ip[] = { 192,168,10,188 }; // IP que prendra le module
byte gateway[] = { 192,168,10,1 }; // Adresse de la Passerelle (routeur)
byte server[] = { 212,27,40,253 }; //Adresse de la FreeBox 212,27,40,253 ou 212,27,40,254
EthernetClient client;   //(server, 80);

int RECV_PIN = 5;// Borne de Reception des infos
IRrecv irrecv(RECV_PIN);
decode_results results;
String CodeFree;  // Sert a stocker le code a transmettre

void setup() {
 irrecv.enableIRIn(); // Demarage du recepteur
 // Demarage de la librairie Communication serie
 Serial.begin(9600);
 Serial.println("ARDUINO NANO..Freebox4..HD2 code TLCD 33669906..");
 // Tempo pour laisser une seconde a l'Ethernet Shield le temps de s'initialiser
 Ethernet.begin(mac, ip, gateway);
 delay(1000);
}

void loop()
{
 if (irrecv.decode(&results)) {
   if (client.connect(server,80)) {
     CodeFree = String("none");
       switch (results.value) {
        case 2151163476: CodeFree = String("options"); break;
        case 2151196244: CodeFree = String("options"); break;
        case 2151196364: CodeFree = String("liste"); break;
        case 2151163596: CodeFree = String("liste"); break;
        case 2151163521: CodeFree = String("help"); break;
        case 2151196289: CodeFree = String("help"); break;
        case 2151196172: CodeFree = String("power"); break;
        case 2151163404: CodeFree = String("power"); break;
        case 2151196314: CodeFree = String("down"); break;
        case 2151163546: CodeFree = String("down"); break;
        case 2151196313: CodeFree = String("up"); break;
        case 2151163545: CodeFree = String("up"); break;
        case 2151196316: CodeFree = String("right"); break;
        case 2151163548: CodeFree = String("right"); break;
        case 2151196315: CodeFree = String("left"); break;
        case 2151163547: CodeFree = String("left"); break;
        case 2151196252: CodeFree = String("ok"); break;
        case 2151163484: CodeFree = String("ok"); break;
        case 2151196291: CodeFree = String("red"); break;   // Back
        case 2151163523: CodeFree = String("red"); break;   // Back
        case 2151163607: CodeFree = String("home"); break;
        case 2151196375: CodeFree = String("home"); break;
        case 2151196269: CodeFree = String("red"); break;
        case 2151163501: CodeFree = String("red"); break;
        case 2151196270: CodeFree = String("green"); break;
        case 2151163502: CodeFree = String("green"); break;
        case 2151196271: CodeFree = String("yellow"); break;
        case 2151163503: CodeFree = String("yellow"); break;
        case 2151196272: CodeFree = String("blue"); break;
        case 2151163504: CodeFree = String("blue"); break;
        case 2152861825: CodeFree = String("info"); break;
        case 2152894593: CodeFree = String("info"); break;
        case 2152861900: CodeFree = String("epg"); break;
        case 2152894668: CodeFree = String("epg"); break;
        case 2151163393: CodeFree = String("1"); break;
        case 2151196161: CodeFree = String("1"); break;
        case 2151163394: CodeFree = String("2"); break;
        case 2151196162: CodeFree = String("2"); break;
        case 2151163395: CodeFree = String("3"); break;
        case 2151196163: CodeFree = String("3"); break;      
        case 2151163396: CodeFree = String("4"); break;
        case 2151196164: CodeFree = String("4"); break;
        case 2151163397: CodeFree = String("5"); break;
        case 2151196165: CodeFree = String("5"); break;
        case 2151163398: CodeFree = String("6"); break;
        case 2151196166: CodeFree = String("6"); break;
        case 2151163399: CodeFree = String("7"); break;
        case 2151196167: CodeFree = String("7"); break;
        case 2151163400: CodeFree = String("8"); break;
        case 2151196168: CodeFree = String("8"); break;
        case 2151163401: CodeFree = String("9"); break;
        case 2151196169: CodeFree = String("9"); break;
        case 2151163392: CodeFree = String("0"); break;
        case 2151196160: CodeFree = String("0"); break;
        case 2151196206: CodeFree = String("fwd"); break;
        case 2151163438: CodeFree = String("fwd"); break;
        case 2151196207: CodeFree = String("bwd"); break;
        case 2151163439: CodeFree = String("bwd"); break;
        case 2151163576: CodeFree = String("play"); break;
        case 2151196344: CodeFree = String("play"); break;
        case 2151163483: CodeFree = String("vol_inc"); break;
        case 2151196251: CodeFree = String("vol_inc"); break;
        case 2151163482: CodeFree = String("vol_dec"); break;
        case 2151196250: CodeFree = String("vol_dec"); break;
        case 2151163480: CodeFree = String("prgm_inc"); break;
        case 2151196248: CodeFree = String("prgm_inc"); break;
        case 2151163481: CodeFree = String("prgm_dec"); break;
        case 2151196249: CodeFree = String("prgm_dec"); break;    
     }
     if (CodeFree.equals("none")) {
        // Pas d'envoie de commande
      Serial.print("Pas d'envoie.....Code:");
       Serial.println(results.value);    // Affichage du code IR
     } else {
       Serial.print("Envoie Code:....");
       Serial.print(CodeFree);    // Affichage du code IR
       Serial.print("........Envoie Code:....");
       Serial.println(results.value);    // Affichage du code IR

       client.println("GET /pub/remote_control?code=33669906&key="+CodeFree+" HTTP/1.0"); // Entrer le code Telecomande a distance
        client.println();
        
       
 //     client.println("GET /pub/remote_control?code=33669906&key="+CodeFree+" HTTP/1.0"); // Entrer le code Telecomande a distance            OK
// http://hd2.freebox.fr/pub/remote_control?code=33669906&key=1&long=true
       
     
     }
    client.stop();
   }
 // Tempo pour eviter la repetition d'une commande non voulu
   delay(100); 
   irrecv.resume();  // reprise de la reception IR, necessaire
 }
}

personne n'a d'idée ???