Modifications

Sauter à la navigation Sauter à la recherche
264 octets ajoutés ,  4 avril 2019 à 16:54
aucun résumé de modification
Ligne 80 : Ligne 80 :  
Nous allons essayer de détecter ce code. Essayons de démarrer un nouveau croquis appelé IR Commander ([http://github.com/adafruit/IR-Commander la version finale du code est disponible sur le GitHub d'AdaFruit]) qui utilisera une partie de notre précédent croquis.  
 
Nous allons essayer de détecter ce code. Essayons de démarrer un nouveau croquis appelé IR Commander ([http://github.com/adafruit/IR-Commander la version finale du code est disponible sur le GitHub d'AdaFruit]) qui utilisera une partie de notre précédent croquis.  
   −
La première partie écourtera simplement le code Infrarouge et placera les temps d'impulsion dans le tableau pulses[]. Il retournera le nombre d'impulsions détecté comme valeur de retour.
+
La première partie écourtera simplement le code Infrarouge et placera les temps d'impulsion dans le tableau {{fname|pulses[]}}. Il retournera le nombre d'impulsions détecté comme valeur de retour.
    
  <nowiki>
 
  <nowiki>
Ligne 119 : Ligne 119 :  
</nowiki>
 
</nowiki>
   −
Our new '''loop()''' will start out just listening for pulses
+
Notre nouvelle fonction {{fname|loop()}} ne fera qu' "écouter" après les impulsions.
    
  <nowiki>
 
  <nowiki>
    void loop(void) {
+
void loop(void) {
 
     int numberpulses;
 
     int numberpulses;
 
     numberpulses = listenForIR();
 
     numberpulses = listenForIR();
Ligne 128 : Ligne 128 :  
     Serial.print(numberpulses);
 
     Serial.print(numberpulses);
 
     Serial.println("-pulse long IR signal");
 
     Serial.println("-pulse long IR signal");
    }
+
}
 
</nowiki>
 
</nowiki>
   −
When we run this it will print out something like...
+
Lorsqu'il fonctionne, il affiche quelque chose comme ceci...
    
{{ADFImage|IR-pulsecounter.jpg}}
 
{{ADFImage|IR-pulsecounter.jpg}}
   −
OK time to make the sketch compare what we received to what we have in our stored array:
+
OK, il est maintenant temps de faire en sorte que notre croquis compare ce qu'il à reçu et ce qu'il a déjà dans le notre tableau de référence:
    
{{ADFImage|IR-ircompare.jpg}}
 
{{ADFImage|IR-ircompare.jpg}}
   −
As you can see, there is some variation. So when we do our comparison we can't look for preciesely the same values, we have to be a little 'fuzzy'. We'll say that the values can vary by 20% - that should be good enough.
+
Comme vous pouvez le voir, il y a quelques variations. Lorsque nous faisons la comparaison, nous ne pouvons malheureusement pas attendre d'avoir exactement les mêmes valeurs, nous devons opter pour une méthode un peu plus 'créative'.  
 +
 
 +
Disons que la valeur peu varier d'environ 20% - cela devrait être suffisant.
    
  <nowiki>
 
  <nowiki>
 +
// Quel pourcentage de variation est toléré durant la comparaison de deux code
 +
#define FUZZINESS 20
   −
 
+
void loop(void) {
    // What percent we will allow in variation to match the same code \\ #define FUZZINESS 20
  −
    void loop(void) {
   
     int numberpulses;
 
     int numberpulses;
 
     numberpulses = listenForIR();
 
     numberpulses = listenForIR();
Ligne 152 : Ligne 154 :  
     Serial.println("-pulse long IR signal");
 
     Serial.println("-pulse long IR signal");
 
     for (int i=0; i< numberpulses-1; i++) {
 
     for (int i=0; i< numberpulses-1; i++) {
    int oncode = pulses[i][1] * RESOLUTION / 10;
+
      int oncode = pulses[i][1] * RESOLUTION / 10;
    int offcode = pulses[i+1][0] * RESOLUTION / 10;
+
      int offcode = pulses[i+1][0] * RESOLUTION / 10;
    Serial.print(oncode); // the ON signal we heard
+
 
    Serial.print(" - ");
+
      Serial.print(oncode); // le signal ON réceptionné
    Serial.print(ApplePlaySignal[i*2 + 0]); // the ON signal we want
+
      Serial.print(" - ");
    // check to make sure the error is less than FUZZINESS percent
+
      Serial.print(ApplePlaySignal[i*2 + 0]); // Le signal ON attendu
    if ( abs(oncode - ApplePlaySignal[i*2 + 0]) <= (oncode * FUZZINESS / 100)) {
+
      // Vérifier pour s'arrure que l'erreur est inférieure à FUZZINESS pourcent
    Serial.print(" (ok)");
+
      if ( abs(oncode - ApplePlaySignal[i*2 + 0]) <= (oncode * FUZZINESS / 100)) {
    } else {
+
        Serial.print(" (ok)");
    Serial.print(" (x)");
+
      } else {
    }
+
        Serial.print(" (x)");
    Serial.print(" \t"); // tab
+
      }
    Serial.print(offcode); // the OFF signal we heard
+
      Serial.print(" \t"); // tab
    Serial.print(" - ");
+
 
    Serial.print(ApplePlaySignal[i*2 + 1]); // the OFF signal we want
+
      Serial.print(offcode); // Le signal OFF réceptionné
    if ( abs(offcode - ApplePlaySignal[i*2 + 1]) <= (offcode * FUZZINESS / 100)) {
+
      Serial.print(" - ");
    Serial.print(" (ok)");
+
      Serial.print(ApplePlaySignal[i*2 + 1]); // Le signal OFF attendu
    } else {
+
      if ( abs(offcode - ApplePlaySignal[i*2 + 1]) <= (offcode * FUZZINESS / 100)) {
    Serial.print(" (x)");
+
        Serial.print(" (ok)");
    }
+
      } else {
    Serial.println();
+
        Serial.print(" (x)");
    }
+
      }
 +
      Serial.println();
 
     }
 
     }
 +
}
 
</nowiki>
 
</nowiki>
    
{{ADFImage|IR-codecompareok.jpg}}
 
{{ADFImage|IR-codecompareok.jpg}}
  −
      
This loop, as it goes through each pulse, does a little math. It compares the absolute ('''abs()''') difference between the code we heard and the code we're trying to match abs(oncode - ApplePlaySignal[i*2 + 0]) and then makes sure that the error is less than FUZZINESS percent of the code length (oncode * FUZZINESS / 100)
 
This loop, as it goes through each pulse, does a little math. It compares the absolute ('''abs()''') difference between the code we heard and the code we're trying to match abs(oncode - ApplePlaySignal[i*2 + 0]) and then makes sure that the error is less than FUZZINESS percent of the code length (oncode * FUZZINESS / 100)
29 910

modifications

Menu de navigation