Décodeur infrarouge

Bonjour ! Je suis assez nouveau dans le domaine, j'ai 2 Vs tank,(tank utiliser pour bataille 4vs4 maximum).J'aimerais avoir les codes pour que lorsque je tire avec le canon je fais clignoter une led.J'ai utilisé le sketch ci dessous. J'ai récupéré le code de 1 des tanks et ca fonctionne très bien, mais lorsque je veux avoir le code du deuxième qui n'est pas sur la même bande que le premier (bande 3 va très bien mais celui de la bande 1=#@#$)J'obtiens plusieurs codes mais jamais un qui reviens a chaque tir. Ceux qui reviennent a intervalle régulier sont des codes provenant de la manette et non du tank.

Ma question est: Existe t-il un sketch différent qui pourrait m'aider a trouver le code de ce tank

Merci

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Bonsoir
Je n'ai pas tres bien compris ton probleme !
si j'essaie de decoder :grin:

  • tu recupere biens les code IR envoyés par la telecommande à destination de ton char ?
  • mais tu ne recupere pas correctement le signal IR de tir ? , le canon du char contient une diode IR qui emet une trame vers un char ennemi lorsque tu donne un ordre de tir ?
    si c'est le cas ,la trame emise par le canon n'est peut etre pas fixe (principe du rolling code) pour justement eviter de faire du flooding

Bonjour Artouste. C'est parfaitement cela. Mais swur les 2 tanks il y en a un que j'ai récupéré le code sans difficulté mais l'autre c'est impossible

LePitstop:
Bonjour Artouste. C'est parfaitement cela. Mais swur les 2 tanks il y en a un que j'ai récupéré le code sans difficulté mais l'autre c'est impossible

ok , donc ma suggestion n'est pas la bonne.
essaye l'exemple IRrecvDump de la lib IRremote et fais un log

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(4): Gap:7568
  Head: m50  s1100
0:m50
Extent=1200
Mark  min:50	 max:50
Space min:32767	 max:0

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(6): Gap:6900
  Head: m350  s3000
0:m300 s1500	1:m250
Extent=5400
Mark  min:250	 max:300
Space min:1500	 max:1500

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(48): Gap:63778
  Head: m12850  s700
0:m1800 s750	1:m550 s1900		 2:m550 s1900	3:m550 s1900		 
4:m2800 s3450	5:m12850 s700		 6:m1850 s700	7:m550 s1850		 
8:m600 s1900	9:m600 s1850		 10:m2800 s3450	11:m12850 s750		 
12:m1800 s750	13:m550 s1850		 14:m600 s1900	15:m550 s1850		 

16:m2850 s3450	17:m12850 s700		 18:m1850 s700	19:m550 s1900		 
20:m550 s1900	21:m600 s1850		 22:m2800
Extent=115400
Mark  min:550	 max:12850
Space min:700	 max:3450

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(2): Gap:8220
  Head: m250  s700

Extent=950
Mark  min:32767	 max:0
Space min:32767	 max:0

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(2): Gap:64464
  Head: m150  s700

Extent=850
Mark  min:32767	 max:0
Space min:32767	 max:0

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(16): Gap:55964
  Head: m400  s700
0:m1000 s1550	1:m150 s3100		 2:m200 s1400	3:m0 s1550		 
4:m100 s700	5:m150 s750		 6:m50
Extent=11800
Mark  min:0	 max:1000
Space min:700	 max:3100

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(20): Gap:53464
  Head: m2250  s650
0:m150 s600	1:m200 s600		 2:m200 s1450	3:m200 s550		 
4:m150 s1500	5:m150 s700		 6:m100 s650	7:m100 s700		 
8:m150
Extent=11050
Mark  min:100	 max:200
Space min:550	 max:1500

pour eventuelle comparaison , fais un log avec manip identique pour le "char" OK

Voila.

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(4): Gap:42900
  Head: m200  s700
0:m750
Extent=1650
Mark  min:750	 max:750
Space min:32767	 max:0

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(8): Gap:6550
  Head: m550  s800
0:m100 s450	1:m250 s2800		 2:m400
Extent=5350
Mark  min:100	 max:400
Space min:450	 max:2800

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(20): Gap:53514
  Head: m750  s400
0:m900 s800	1:m150 s550		 2:m250 s550	3:m200 s2350		 
4:m50 s600	5:m200 s850		 6:m250 s2800	7:m450 s1250		 
8:m100
Extent=13450
Mark  min:50	 max:900
Space min:550	 max:2800

Decoded Unknown(0): Value:0 (0 bits)
Raw samples(18): Gap:9064
  Head: m2100  s650
0:m150 s1350	1:m200 s650		 2:m250 s500	3:m200 s2600		 
4:m150 s800	5:m50 s1850		 6:m550 s1250	7:m350
Extent=13650
Mark  min:50	 max:550
Space min:500	 max:2600

J'ai fait un tableur comparatif sur excel pour déterminer quel code apparaissait le plus régulièrement et après plus de 400 codes rien de concluant. Voici les codes obtenu avec le sketch que j'ai mis précédemment apres 2 tirs consécutif de canon. les codes répété sont des codes qui ne fonctionnent pas.ils viennent de la télécommande.
706BC8C7 C9E4765D 1DF0566E 3328359 3328359 8F264DB9 3328359 57C5CF82 8A21BF20
CD12C894 CB30C480 56C5CDF1 1C7C21CE F32AB205 97F111BE 56C5CDF1 3328359 3328359
99E723D6 3328359 C47FB464 699DD62E D1A96719 44E47D62 56C5CDF1 56C5CDF1 4A830750
37EAA48 F1508BA 7CF76AD7

les tirs du char "pas reconnu par toi " sont validés par les chars touchés ?
tu dispose de quoi comme materiel de mesure

  • oscillo ?
  • analyseur logique ?

Rien seulement les sketch Arduino. Ce qui était parfait pour un simple bricoleur comme moi, car je suis loin d’être un crack de l'électronique, mais je suis très patient donc l'apprentissage essai erreur ne me dérange pas beaucoup. :slight_smile: Et oui ils sont reconnu par l'autre char.

LePitstop:
Rien seulement les sketch Arduino. Ce qui était parfait pour un simple bricoleur comme moi, car je suis loin d’être un crack de l'électronique, mais je suis très patient donc l'apprentissage essai erreur ne me dérange pas beaucoup. :slight_smile: Et oui ils sont reconnu par l'autre char.

OK
tu peux essayer d'utiliser ce pseudo analyseur logique et faire des logs des 2 chars
pin 2 obligatoire sur un uno

enum PinAssignments {
  encoderPinA = 2,

};

unsigned long Tparc=0; //  temps de parcours du secteur
unsigned long Tact=0; // Test pour  micros() en entrée 
unsigned long ParcMax=3000000; // delai max en µs pour parcourir un secteur, si > arret theorique 
unsigned long Tparct[256] ; // tableau de long stockant les valeurs micros() à chaque interruption
byte Eparc[256]; // tableau  stockant haut ou bas H ou L

byte Iparc=0; // indice pour parcourir Tparct

boolean Sint=false; // passé par l'interruption oui/non
void setup() {

  pinMode(encoderPinA, INPUT);

  attachInterrupt(0, doEncoderA, CHANGE); // // encoder pin on interrupt 0 (pin 2)

  Serial.begin(115200);
}

void loop(){
  if (Sint==true)
  {

    Serial.print(">"); // pour test d'entre/sortie de secteur ,indique passage par int0 

    Sint=false;
    
  }

  if (micros()-Tact > ParcMax) { // tempo en µsecondes pour test si pas eu d'interruption 

    Tact=micros();
    Serial.println();
    Serial.print("-- passe tempo --> ETATS=");  
    
    Serial.print(Iparc);
    Serial.print(" ");
    
    Serial.print(millis());
    Serial.print("=millis ");
    for (byte i=1; i < Iparc; i++){
      
  
      Tparc=Tparct[i]-Tparct[i-1];
      if  (Eparc[i]>0) Serial.print("L"); // etat LOW/BAS
      if  (Eparc[i]==0) Serial.print("H"); // etat HAUT/HIGH
      
      Serial.print(Tparc); 
      Serial.print(";"); // delimiteur pour log tableur

    } 

    Serial.println();

    Iparc=0;
  }

}

// Interrupt on A changing state
void doEncoderA(){

  Tparct[Iparc]=micros(); // plus rapide 
  
  Eparc[Iparc]=digitalRead(encoderPinA);
  Iparc ++;
  Sint=true;
}

:o Voici ce que j'obtiens. Je n'y comprend rien :confused:

ÿÿ¿ÿÿÿÿÿÿÿÿÿÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿû÷ÿÿûÿ·ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷÷ÿÿ¿ÿÿÿÿûûÿÿwÿÿÿÿûÿhÈ!•%R)"5}C!R-%“V¿&ô,µ|ò"“mÊ%-²‘-5-%î
µñ…èþ

ça ça indique que ton serial monitor n'est pas réglé sur 115200 :sunglasses:

Merci comme tu peux voir je suis très débutant. voila ce que j'obtiens remarque que je ne comprend pas plus C'est celui du char récalcitrant.

-- passe tempo --> ETATS=154 8999=millis L2452;H364;L444;H360;L436;H420;L392;H384;L420;H400;L404;H388;L416;H408;L392;H392;L812;H364;L452;H360;L440;H800;L792;H808;L800;H119484;L2512;H424;L392;H412;L396;H384;L420;H384;L420;H408;L388;H392;L412;H360;L452;H380;L812;H408;L404;H396;L416;H776;L820;H804;L800;H63020;L13080;H620;L1948;H616;L668;H1796;L676;H1776;L720;H1812;L2908;H3448;L13052;H612;L1952;H620;L668;H1812;L668;H1792;L680;H1820;L5252;H412;L392;H284;L13072;H612;L1960;H608;L676;H1784;L692;H1804;L668;H1824;L2908;H3416;L13076;H608;L1948;H628;L668;H1808;L668;H1792;L688;H1796;L2924;H73500;L2448;H352;L452;H356;L444;H388;L424;H380;L436;H360;L428;H332;L468;H360;L448;H380;L832;H328;L468;H372;L432;H800;L800;H800;L804;H119596;L2436;H308;L476;H420;L416;H336;L484;H348;L416;H356;L436;H376;L440;H392;L460;H340;L420;H356;L440;H360;L424;H416;L380;H416;L420;

Voila celui du char si facile a trouver

-- passe tempo --> ETATS=78 3000=millis L2524;H792;L420;H304;L532;H352;L472;H388;L424;H384;L452;H400;L420;H424;L404;H400;L424;H400;L436;H412;L404;H836;L392;H400;L424;H164288;L2492;H828;L400;H424;L388;H436;L408;H392;L444;H352;L444;H388;L448;H440;L388;H416;L416;H392;L428;H424;L388;H820;L408;H432;L412;H164256;L2532;H812;L408;H420;L432;H392;L384;H392;L440;H436;L404;H420;L416;H352;L460;H368;L448;H408;L388;H440;L416;H784;L452;H416;L392;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-- passe tempo --> ETATS=52 5999=millis L2532;H784;L432;H388;L396;H428;L412;H420;L408;H412;L432;H344;L460;H392;L448;H428;L408;H436;L428;H376;L400;H828;L392;H432;L384;H164272;L2532;H832;L392;H436;L392;H396;L428;H376;L464;H412;L480;H324;L400;H452;L392;H400;L432;H420;L400;H416;L392;H848;L400;H400;L432;

LePitstop:
Merci comme tu peux voir je suis très débutant. voila ce que j'obtiens remarque que je ne comprend pas plus

-- passe tempo --> ETATS=154 8999=millis L2452;H364;L444;H360;L436;H420;L392;H384;L420;H400;L404;H388;L416;H408;L392;H392;L812;H364;L452;H360;L440;H800;L792;H808;L800;H119484;L2512;H424;L392;H412;L396;H384;L420;H384;L420;H408;L388;H392;L412;H360;L452;H380;L812;H408;L404;H396;L416;H776;L820;H804;L800;H63020;L13080;H620;L1948;H616;L668;H1796;L676;H1776;L720;H1812;L2908;H3448;L13052;H612;L1952;H620;L668;H1812;L668;H1792;L680;H1820;L5252;H412;L392;H284;L13072;H612;L1960;H608;L676;H1784;L692;H1804;L668;H1824;L2908;H3416;L13076;H608;L1948;H628;L668;H1808;L668;H1792;L688;H1796;L2924;H73500;L2448;H352;L452;H356;L444;H388;L424;H380;L436;H360;L428;H332;L468;H360;L448;H380;L832;H328;L468;H372;L432;H800;L800;H800;L804;H119596;L2436;H308;L476;H420;L416;H336;L484;H348;L416;H356;L436;H376;L440;H392;L460;H340;L420;H356;L440;H360;L424;H416;L380;H416;L420;

voilà , c'est déjà tout de suite mieux :grin:
fais plusieurs logs differenciés et explicite pour tes 2 chars
en fait les nombres qui suivent les L et H sont les valeurs des etats LOW et HIGH en µs
ça permet déjà de faire des comparaisons/analogie .

Mais à quoi nous servirons ces comparaisons ?

Char Japonais (récalcitrant)

-- passe tempo --> ETATS=158 53999=millis L432;H119708;L2440;H408;L424;H380;L416;H376;L412;H392;L416;H356;L448;H364;L484;H320;L444;H384;L416;H388;L420;H360;L468;H364;L420;H388;L416;H119708;L2444;H396;L404;H384;L484;H304;L524;H312;L412;H416;L396;H380;L420;H412;L392;H380;L420;H396;L412;H412;L396;H392;L412;H340;L468;H119676;L2464;H400;L428;H380;L412;H412;L384;H368;L448;H388;L420;H304;L508;H380;L420;H376;L468;H344;L420;H376;L420;H360;L444;H388;L416;H119704;L2440;H392;L412;H440;L388;H368;L424;H384;L420;H360;L444;H388;L500;H300;L416;H396;L412;H384;L420;H388;L408;H324;L492;H388;L420;H119688;L2480;H392;L400;H376;L452;H324;L452;H384;L416;H396;L412;H344;L460;H368;L428;H396;L416;H368;L428;H404;L408;H412;L396;H388;L416;H119736;L2424;H408;L388;H400;L420;H408;L412;H392;L392;H392;L424;H372;L424;H336;L464;H416;L392;H360;L452;H352;L444;H416;L444;H308;L444;

-- passe tempo --> ETATS=106 56999=millis L432;H119704;L2432;H356;L472;H412;L372;H376;L432;H400;L400;H380;L444;H296;L504;H392;L416;H360;L444;H396;L368;H400;L464;H368;L412;H392;L436;H119680;L2420;H432;L392;H336;L472;H384;L432;H348;L440;H392;L436;H360;L412;H388;L412;H380;L440;H388;L436;H216;L564;H392;L412;H392;L412;H119644;L2536;H324;L448;H412;L356;H420;L428;H360;L440;H384;L412;H332;L468;H396;L424;H396;L384;H360;L464;H360;L444;H388;L412;H352;L476;H119644;L2508;H404;L388;H392;L412;H368;L436;H328;L484;H356;L452;H352;L424;H412;L412;H416;L388;H396;L476;H328;L412;H388;L416;H392;L420;H676020;L240;

-- passe tempo --> ETATS=106 60000=millis L428;H119692;L2464;H424;L408;H372;L432;H344;L432;H400;L528;H252;L440;H376;L420;H396;L424;H408;L388;H396;L420;H352;L452;H380;L412;H416;L392;H119692;L2496;H372;L440;H364;L444;H360;L420;H312;L484;H404;L404;H412;L388;H380;L424;H400;L420;H276;L540;H380;L408;H344;L460;H388;L412;H119756;L2448;H344;L420;H400;L428;H412;L396;H384;L404;H408;L412;H384;L416;H416;L392;H328;L476;H412;L388;H396;L412;H396;L416;H368;L456;H119696;L2452;H412;L404;H392;L384;H340;L480;H416;L392;H392;L460;H352;L408;H384;L420;H400;L412;H380;L412;H364;L436;H416;L400;H316;L468;

L404;H119696;L2456;H388;L416;H392;L408;H364;L440;H400;L396;H400;L440;H364;L424;H404;L388;H396;L400;H404;L440;H288;L480;H400;L416;H360;L444;H119696;L2468;H356;L436;H388;L408;H424;L384;H364;L440;H420;L404;H348;L452;H352;L444;H384;L396;H368;L492;H352;L412;H368;L444;H416;L372;H119732;L2432;H384;L412;H360;L524;H284;L448;H368;L448;H384;L392;H400;L412;H400;L412;H288;L508;H392;L424;H408;L388;H396;L436;H392;L388;H119660;L2480;H360;L460;H312;L496;H368;L416;H412;L392;H412;L400;H380;L416;H392;L400;H420;L384;H360;L452;H396;L400;H404;L404;H404;L404;

Char U.S

-- passe tempo --> ETATS=208 300001=millis L2520;H788;L452;H392;L412;H392;L412;H404;L464;H360;L424;H404;L420;H348;L476;H408;L828;H400;L428;H404;L468;H328;L856;H824;L928;H163600;L2500;H828;L392;H428;L420;H348;L448;H432;L380;H384;L504;H356;L412;H456;L372;H384;L444;H416;L392;H420;L416;H776;L436;H304;L536;H163672;L2472;H832;L412;H396;L428;H412;L420;H408;L400;H424;L404;H416;L400;H404;L416;H296;L532;H400;L416;H336;L496;H776;L456;H384;L428;H163628;L2532;H832;L404;H392;L428;H372;L456;H428;L388;H380;L452;H392;L416;H424;L400;H400;L408;H416;L412;H416;L404;H840;L392;H452;L376;H163624;L2552;H736;L464;H380;L460;H416;L400;H396;L416;H384;L444;H428;L392;H376;L452;H324;L512;H392;L504;H316;L420;H800;L424;H404;L416;H163668;L2508;H804;L420;H400;L416;H428;L396;H404;L424;H396;L460;H368;L404;H444;L396;H424;L400;H372;L444;H392;L436;H824;L388;H412;L420;H163672;L2516;H780;L424;H420;L400;H292;L512;H416;L420;H408;L424;H396;L424;H400;L416;H408;L408;H412;L408;H412;L432;H816;L396;H404;L448;H163612;L2564;H764;L468;H352;L428;H368;L472;H356;L500;H356;L432;H408;L392;H376;L460;H388;L428;H396;L416;H412;L428;H796;L420;H396;L416;H158508;L364;H4796;L2492;H820;L436;H312;L484;H404;L428;H400;L2060;H336;L528;H336;L528;H300;L400;H416;L460;H796;L500;H316;L432;

-- passe tempo --> ETATS=156 303000=millis L2488;H808;L400;H448;L396;H372;L460;H396;L424;H404;L404;H332;L484;H416;L416;H408;L400;H444;L384;H340;L536;H764;L408;H436;L388;H163700;L2480;H824;L404;H396;L416;H392;L420;H436;L404;H396;L420;H428;L392;H376;L448;H404;L440;H356;L440;H416;L408;H808;L412;H412;L412;H163664;L2560;H752;L416;H432;L372;H452;L388;H412;L400;H420;L424;H396;L420;H380;L436;H412;L424;H400;L440;H348;L456;H824;L392;H400;L428;H163636;L2528;H804;L408;H416;L404;H388;L448;H376;L440;H436;L392;H432;L416;H384;L412;H412;L416;H372;L456;H404;L416;H800;L416;H408;L420;H163700;L2496;H824;L452;H376;L436;H292;L492;H444;L356;H424;L420;H396;L420;H408;L404;H388;L432;H444;L408;H392;L424;H820;L380;H388;L460;H163660;L2500;H796;L428;H396;L416;H408;L396;H424;L388;H432;L424;H424;L388;H400;L428;H360;L472;H400;L404;H416;L444;H800;L408;H392;L420;H132328;L140;

-- passe tempo --> ETATS=130 306000=millis L2516;H796;L396;H412;L404;H396;L448;H400;L420;H332;L480;H440;L404;H396;L404;H436;L408;H420;L404;H392;L432;H800;L416;H372;L452;H163684;L2488;H844;L380;H396;L448;H404;L420;H400;L416;H328;L500;H424;L388;H416;L464;H328;L452;H420;L388;H412;L440;H788;L416;H432;L384;H163716;L2456;H840;L428;H420;L384;H404;L428;H432;L376;H444;L388;H404;L412;H420;L420;H400;L428;H324;L496;H376;L448;H804;L416;H404;L400;H163720;L2496;H812;L408;H404;L412;H404;L440;H344;L468;H420;L416;H420;L436;H356;L412;H384;L532;H336;L412;H372;L444;H800;L428;H416;L372;H163732;L2492;H812;L420;H396;L428;H368;L436;H396;L436;H384;L456;H396;L436;H408;L424;H264;L532;H392;L420;H412;L416;H808;L404;H440;L404;H261436;L140;

LePitstop:
Mais à quoi nous servirons ces comparaisons ?

:astonished:
Peut etre à essayer de faire de l'analyse comparative de chronogrammes ? non ? 8)
... c'est ton projet, pas le mien

Ah D'accord je te croyais dédier À la cause (lol..) non je blague, c'est que je ne sais pas quoi comparer ?