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.
Conseil | Recevez Pin | Transmettre Pin | Minuterie Utilisé | PWM Pins handicapés |
---|---|---|---|---|
Teensy 3.0 | Tout | 5 | CMT | Aucun |
Teensy 2.0 | Tout | 10 | 4 | 12 |
Teensy 1.0 | Tout | 17 | 1 | 15, 18 |
Teensy + + 2.0 | Tout | 1 | 2 | 0 |
Teensy + + 1.0 | Tout | 1 | 2 | 0 |
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
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.
merci
RépondreSupprimerderien
Supprimerderien
RépondreSupprimer