Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] Quel récepteur reçoit le signal?

Avec 3 récpeteurs IR et un émetteur

    30 mars 2015 à 16:28:59

    Bonjour,

    je possède deux cartes arduino, j'ai branché un émetteur IR sur l'une et 3 récepteurs IR sur l'autre et j'ai un programme censé détecter quel récepteur reçoit le message transmis par l'émetteur.

    Cependant celui-ci ne fonctionne point, et je ne comprends pas d'où peut provenir cette erreur.

    J'ai grand besoin de votre aide, merci d'avance.

    Je vous joint la copie des deux codes :

    émetteur

    #include <IRSendRev.h>
    
    void setup()
    {
        //enableIROut(38);
    }
    //unsigned char d[] = {9, 90, 91, 11, 31, 4, 1, 2, 3, 4};
    unsigned char d[] = {15, 70, 70, 20, 60, 10, 1, 2, 3, 4,5,6,7,8,9,10};
    //Very Important:
    //the first parameter(15): the data that needs to be sent;
    //the next 2 parameter(70,70): the logic high and low duration of "Start";
    //the next 2 parameter(20,60): the logic "short" and "long"duration in the communication
    //                             that to say:  if "0", the high duration is 20ms and  low is 20 ms; while logic "1",
    //                              the high duration is 20 ms and low is 60 ms;
    //the next 2 parameter(10): number of data you will sent;
    //the next parameter(1, 2, 3, 4,5,6,7,8,9,10): data you will sent ;
    void loop()
    {
        IR.Send(d, 38);//sent the data via 38Kz IR
        delay(1000);
    }
    

    récepteur

    #include <IRSendRev.h>
    //#include <IRSendRevInt.h>
    
    
    void setup()
    {
        Serial.begin(115200);
        IR.Init(A2);
        IR.Init(A1);
        IR.Init(A3);
        Serial.println("init over"); //indique que le recepteur a bien ete initialise
    }
    
    unsigned char dta[20];
    
    void loop()
    {
      int a = 0;
      while (1)
      {
        a++;
        if (a == 3)
        {
          a = 0;
        }
       switch(a)
        {
          case 0 :
            IR.Init(A1);
            break;
          case 1 :
            IR.Init(A2);
            break;
          default :
            IR.Init(A3);
            break;
            
        }
         
         if(IR.IsDta())
          {
             // IR.Recv(dta);
              int length= IR.Recv(dta);
              for (int i =0;i<length;i++)
              {
                Serial.print(dta[i]);
                Serial.print("\t");
              }
              Serial.println();
                  Serial.println(a);
    
          }
        }
     }



    Votre dévoué serviteur

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2015 à 19:33:36

      Ton programme récepteur passe son temps à réinitialisé la lib IR sur une pin différente sans jamais lui laisser le temps de recevoir la moindre information.

      Alors forcément, vu sous cet angle, cela ne marchera jamais...

      Pour que ton code fonctionne, il faudrait écouter simultanément les 3 capteurs et non passer de l'un à l'autre à boucle.

      Je doute fort que tu trouves une lib capable de faire ce genre de chose donc il te faudra probablement plonger dans le code source de ta lib pour faire les modifications nécessaires.

      -
      Edité par lorrio 30 mars 2015 à 19:34:35

      • Partager sur Facebook
      • Partager sur Twitter

      [Arduino] Quel récepteur reçoit le signal?

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown