[BIBLIOTHEQUE] IrRemote

IrRemote, par Ken Shirriff , vous permet de recevoir ou transmettre des codes de télécommande infrarouge. Vous pouvez faire vos projets Contrôlé par une télécommande, ou de les faire contrôler d'autres appareils comme les téléviseurs et composants stéréo.
Télécharger : IRremote.zip (modifié pour fonctionner sur des planches Teensy et autres)

Configuration matérielle requise

Pour la transmission, une seule LED infrarouge et la résistance sont nécessaires. Pour la réception, d'un module récepteur IR avec filtre passe-bande interne est nécessaire.
TODO: Ajoutez les références des réputés bons voyants et récepteurs infrarouges. Le voyant cette photo est Lumex OED-EL-8L (Digikey 67-1000-ND) et le récepteur est probablement GP1UD281YK0F Forte (maintenant discontinué, Digikey 425-1987-ND).

TODO: Test Vishay récepteur TSOP39338 (Digikey 751-1390-5-ND). Il est très probable à travailler. Mettre à jour cette photo. Peut-être PJRC devrait vendre une autre en bon LED & paire de récepteur?


Pour la transmission, vous devez connecter le LED à une broche spécifique. La sortie du récepteur peut être connecté à n'importe quel axe.

ConseilRecevez
Pin
Transmettre
Pin
Minuterie
Utilisé
PWM Pins
handicapés
Teensy 3.0Tout5CMTAucun
Teensy 2.0Tout10412
Teensy 1.0Tout17115, 18
Teensy + + 2.0Tout120
Teensy + + 1.0Tout120


Utilisation de base

IrRemote agit comme 2 bibliothèques, l'une pour l'émission et l'autre pour recevoir. Habituellement, il est plus facile de trouver les codes pour transmettre en utilisant d'abord le récepteur.

Recevoir

IRrecv irrecv (receivePin)
Créer l'objet récepteur, en utilisant un nom de votre choix.
irrecv. enableIRIn ()
Commencez le processus de réception. Cela permettra à l'interruption de l'horloge qui consomme une petite quantité de CPU toutes les 50 ms.
irrecv. décodage (et résultats)
Essayez de recevoir un code IR. Retourne true si un code a été reçue, ou false si rien reçu encore. Lorsqu'un code est reçu, l'information est stockée dans "Résultats".
results.decode_type : sera l'un des éléments suivants: NEC , Sony , RC5 , RC6 , ou UNKNOWN . results.value : Le code IR réelle (0 si le type est inconnu) results.bits : Le nombre de bits utilisés par le présent code résultats . rawbuf : Un tableau d'IR impulsion fois results.rawlen : Le nombre d'éléments stockés dans le tableau



irrecv. reprendre ()
Après avoir reçu, ce doit être appelée pour réinitialiser le récepteur et de le préparer à recevoir un autre code.
irrecv. blink13 ( vrai )
Activer le clignotement du voyant lorsque le cours de la réception. Parce que vous ne pouvez pas voir la lumière infrarouge, clignotant de la LED peut être utile lors du dépannage, ou tout simplement de donner une rétroaction visuelle.

Transmettre

IRsend irsend;
Créez l'objet de transmission. Un certain nombre d'axe fixe est toujours utilisée, selon le timer de la bibliothèque est l'utilisation.
. irsend sendNEC (IRcode, nombrebits);
Envoyer un code au format NEC.
. irsend sendSony (IRcode, nombrebits);
Envoyer un code au format Sony.
. irsend sendRC5 (IRcode, nombrebits);
Envoyer un code au format RC5.
. irsend sendRC6 (IRcode, nombrebits);
Envoyer un code dans RC6
. irsend SendRaw (rawbuf, rawlen, fréquence);


Envoyer un code brut. Normalement, vous devriez obtenir le contenu du rawbuf et rawlen en utilisant le récepteur de nombreuses fois et la moyenne des résultats. Certains ajustements peuvent être nécessaires pour une meilleure performance. La fréquence est la fréquence du filtre passe-bande attendue au niveau du récepteur, où 38 est le plus couramment utilisé.

Exemple de programme - Recevoir




# Include <IRremote.h>

const  int RECV_PIN = 6;

IRrecv irrecv (RECV_PIN);

decode_results résultats;

vide  setup ()
{
  Série . commencer (9600);
  . irrecv enableIRIn (); / / démarrer le récepteur 
  . irrecv blink13 ( vrai );
}

vide  boucle () {
   si (irrecv. décodage (et résultats)) {
     si (results.decode_type == NEC ) {
       série . print ( "NEC:" );
    }  d'autre  si (results.decode_type == SONY ) {
       série . print ( "SONY:" );
    }  d'autre  si (results.decode_type == RC5 ) {
       série . impression ( "RC5:" );
    }  d'autre  si (results.decode_type == RC6 ) {
       série . print ( "RC6:" );
    }  d'autre  si (results.decode_type == UNKNOWN ) {
       série . print ( "Unknown:" );
    }
    Série . println (results.value, HEX );
    . irrecv reprendre (); / / recevoir la valeur suivante
  }
}

Exemple de programme - Transmettre

# Include <IRremote.h>

IRsend irsend;

vide  setup () {
}

vide  boucle () {
    . irsend sendSony (0x68B92, 20);
     retard (100);
    . irsend sendSony (0x68B92, 20);
     retard (100);
    . irsend sendSony (0x68B92, 20);
     retard (300000);
}

Utilisation de la minuterie

IrRemote nécessite une minuterie pour l'émission et la réception. Si vous souhaitez utiliser une autre bibliothèque qui exige le même délai, vous pouvez modifier IRremoteInt.h faire irRemote utiliser un minuteur différent.

3 commentaires: