Étape 4: Codage de temps !
Une fois que vous avez le code hexadécimal pour les boutons que vous voulez, nous pouvons descendre à coder votre Arduino à réagir !Tout comme dans le programme IRrecord, vous devez avoir la ligne include :
#include < IRremote.h >
Maintenant vous devez indiquer votre Arduino que vous utilisez broche 11 pour le récepteur IR :
int RECV_PIN = 11 ;
Initialisez vos variables :
Chaîne de ;
Actu de chaîne = "" ;
String cur2 = "" ;
Ajouter ce genre de choses fantaisie :
IRrecv irrecv(RECV_PIN) ;
9
10 résultats de decode_results ;
Maintenant, faire votre configuration :
void setup()
{
Serial.Begin(9600) ;
irrecv.enableIRIn() ; Démarrer le récepteur
}
Maintenant, dans votre boucle, vous aurez besoin un bloc fonction if() , donc l’Arduino sait que c’est à la recherche d’IR :
si (irrecv.decode (et résultats))
À l’intérieur de ce bloc de fonction if() , vous devrez dire l’Arduino pour rendre la variable "dans" une chaîne de quel que soit le code hexadécimal est, puis lui dire pour obtenir la valeur suivante de IR. Mon code imprime « in » à la SM pour des fins de débogage.
{
en = String(int(results.value), HEX) ;
irrecv.Resume() ; Recevoir la valeur suivante
Serial.println(in) ;
}
Maintenant, vous devez les blocs fonction if() et else if() à dire votre arduino quoi faire. Voici ce que j’ai :
si (en == « 8422 » || dans == « 422 » || dans == « 906f » || dans == « 38c7"){hold();}
ElseIf (en == « 841e » || dans == « 41F » || dans == « 18e7 » || dans == « a857"){straight();}
ElseIf (en == « 841f » || dans == « 41f » || dans == « 4ab5 » || dans == « e01f"){backup();}
ElseIf (en == « 8420 » || dans == « 420 » || dans == « 10ef » || dans == « 22dd"){left_turn();}
ElseIf (en == « 8421 » || dans == « 421 » || dans == « 5aa5 » || dans == « 2fd"){right_turn();}
première fonction if() cherche le bouton 5 à presser (je l’ai mis en place et ne peut fonctionner plusieurs télécommandes). Après cela, vous pouvez soit avoir des blocs de fonction if() plus, qui vont ralentir l’Arduino si vous en avez assez d’eux, ou vous pouvez utiliser la fonction if() d’autre blocs. Chaque bloc contient un appel de la sous-routine, qui évoque cette sous-routine spécifique d’agir. Ceci empêche votre code étant mis au rebut vers le haut. Une sous-routine exemple ressemble à ceci :
Sub straight()
{
Left.Write(82) ;
Right.Write(101) ;
}
Il est révélateur de l’Arduino pour allumer les servos gauche et droit à un montant précis afin qu’ils conduisent à des vitesses égales.
Maintenant que nous avons les pièces de base, ensemble, nous pouvons mettre ça ensemble !
#include < IRremote.h > String dans ; IRrecv irrecv(RECV_PIN) ; void setup() void loop() en = String(int(results.value), HEX) ;
int RECV_PIN = 11 ;
résultats de la decode_results ;
{
Serial.Begin(9600) ;
irrecv.enableIRIn() ; Démarrer le récepteur
}
{
Si (irrecv.decode (et résultats)) {}
irrecv.Resume() ; Recevoir la valeur suivante
Serial.println(in) ;
Si (en ==
ElseIf (en == < valeur hexadécimale > ) {< code >}
ElseIf (en == < valeur hexadécimale >) {< code >}
ElseIf (en == < valeur hexadécimale >) {< code >}
ElseIf (en == < valeur hexadécimale >) {< code >}
}
}
Maintenant vous pouvez simplement modifier, télécharger et commencer à contrôler votre Arduino avec une télévision à distance ! Incroyable !