Étape 5 :
Le code ci-dessous a été modifié depuis original rf esquisse http://rayshobby.net/?p=2427 de Ray Wang
Mon exemple de croquis
Utiliser la bibliothèque irremote
#include < IRremote.h >
IRsend irsend ;
Tampon pour stocker les commandes entrantes de serial port/bluetooth
InData chaîne ;
définit la goupille qui enverra les données rf
int sendPin = 10 ;
définit combien de temps pour tenir une rafale de rf
#define DELAYSHORT 160
#define DELAYLONG 500
{} public static ookPulse Sub (int sur, int off)
digitalWrite (sendPin, HIGH) ;
delayMicroseconds(on) ;
digitalWrite (sendPin, basse) ;
delayMicroseconds(off) ;
}
public static void pt2262Send (uint14_t, signature, commande uint10_t) {}
octet i, k ;
Envoyer 14 fois
pour (k = 0; k < 14; k ++) {}
Envoyez tout d’abord les signature
pour (i = 0; i < 14; i ++) {}
Si ((signature > >(13-i)) & 0 x 1) {}
ookPulse (DELAYLONG, DELAYSHORT) ;
} else {}
ookPulse (DELAYSHORT, DELAYLONG) ;
}
}
pour (i = 0; i < 10; i ++) {}
Si ((commande > >(9-i)) & 0 x 1) {}
ookPulse (DELAYLONG, DELAYSHORT) ;
} else {}
ookPulse (DELAYSHORT, DELAYLONG) ;
}
}
terminer par un « 0 »
ookPulse (DELAYSHORT, DELAYLONG) ;
court délai
Delay(5) ;
}
}
void setup() {}
Serial.Begin(9600) ;
pinMode (sendPin, sortie) ;
}
void loop() {}
tandis que (Serial.available() > 0)
{
char a reçu = Serial.read() ;
inData += reçues ;
Traiter le message lors de la réception K caractères
Si (a reçu == « K »)
{
Serial.Print ("Arduino a reçu:") ;
Serial.Print(inData) ;
Si (inData == « TVINPUTK ») {irsend.sendNEC (0x1CE3C837, 32); delay(100);}
Si (inData == « TVPOWERK ») {irsend.sendNEC (0x1CE348B7, 32); delay(100);}
Si (inData == « TVINFOK ») {irsend.sendNEC (0x1CE330CF, 32); delay(100);}
Si (inData == « TVPIXSHAPEK ») {irsend.sendNEC (0x1CE3EA15, 32); delay(100);}
Si (inData == « TVAUDIOK ») {irsend.sendNEC (0x1CE358A7, 32); delay(100);}
Si (inData == « TVRESETK ») {irsend.sendNEC (0x1CE338C7, 32); delay(100);}
Si (inData == « TVCAPTIONK ») {irsend.sendNEC (0x1CE38877, 32); delay(100);}
Si (inData == « TVSLEEPK ») {irsend.sendNEC (0x1CE3B04F, 32); delay(100);}
Si (inData == « TVONEK ») {irsend.sendNEC (0x1CE3807F, 32); delay(100);}
Si (inData == « TVTWOK ») {irsend.sendNEC (0x1CE340BF, 32); delay(100);}
Si (inData == « TVTHREEK ») {irsend.sendNEC (0x1CE3C03F, 32); delay(100);}
Si (inData == « TVFOURK ») {irsend.sendNEC (0x1CE320DF, 32); delay(100);}
Si (inData == « TVFIVEK ») {irsend.sendNEC (0x1CE3A05F, 32); delay(100);}
Si (inData == « TVSIXK ») {irsend.sendNEC (0x1CE3609F, 32); delay(100);}
Si (inData == « TVSEVENK ») {irsend.sendNEC (0x1CE3E01F, 32); delay(100);}
Si (inData == « TVEIGHTK ») {irsend.sendNEC (0x1CE310EF, 32); delay(100);}
Si (inData == « TVNINEK ») {irsend.sendNEC (0x1CE3906F, 32); delay(100);}
Si (inData == « TVCHLUPK ») {irsend.sendNEC (0x1CE350AF, 32); delay(100);}
Si (inData == « TVCHLDWNK ») {irsend.sendNEC (0x1CE3D02F, 32); delay(100);}
Si (inData == « TVZEROK ») {irsend.sendNEC (0x1CE300FF, 32); delay(100);}
Si (inData == « TVVOLUPK ») {irsend.sendNEC (0x1CE3708F, 32); delay(100);}
Si (inData == « TVVOLDWNK ») {irsend.sendNEC (0x1CE3F00F, 32); delay(100);}
Si (inData == « TVRECALLK ») {irsend.sendNEC (0x1CE39867, 32); delay(100);}
Si (inData == « TVMUTEK ») {irsend.sendNEC (0x1CE318E7, 32); delay(100);}
Si (inData == « LIGHTONEK ») {pt2262Send (0b00011101010101, 0b0000000011); delay(100);}
Si (inData == « LIGHTTWOK ») {pt2262Send (0b00011101010101, 0b0000001100); delay(100);}
Si (inData == « LIGHTTHREEK ») {pt2262Send (0b00011101010101, 0b0000110000); delay(100);}
Si (inData == « LIGHTFOURK ») {pt2262Send (0b00011101010101, 0b0011000000); delay(100);}
Si (inData == « LIGHTFIVEK ») {pt2262Send (0b00011101010101, 0b1100000000); delay(100);}
Si (inData == « LIGHTALLK ») {pt2262Send (0b00011101010101, 0b1111111111); delay(100);}
Si (inData == « LIGHTLRK ») {pt2262Send (0b00011101010101, 0b0000001111); delay(100);}
CLIGNOTE À CHAQUE PRISE DE MARCHE ET D’ARRÊT DANS UN MODE PANIQUE
Si (inData == « LIGHTPANICK ») {pour (int i = 2; J’ai < 50; i ++) {}
pt2262Send (0b00011101010101, 0b0000000011) ; Delay(500) ;
pt2262Send (0b00011101010101, 0b0000000011) ; Delay(100) ;
pt2262Send (0b00011101010101, 0b0000001100) ; Delay(500) ;
pt2262Send (0b00011101010101, 0b0000001100) ; Delay(100) ;
pt2262Send (0b00011101010101, 0b0000110000) ; Delay(500) ;
pt2262Send (0b00011101010101, 0b0000110000) ; Delay(100) ;
pt2262Send (0b00011101010101, 0b0011000000) ; Delay(500) ;
pt2262Send (0b00011101010101, 0b0011000000) ; Delay(100);} }
Si (inData == « TVMEDIAK ») {irsend.sendNEC (0x1CE300FF, 32); delay(500) ;
irsend.sendNEC (0x1CE340BF, 32) ; Delay(500) ;
irsend.sendNEC (0x1CE3D02F, 32) ; Delay(500) ;
irsend.sendNEC (0x1CE3D02F, 32) ; Delay(500) ;
}
Vous pouvez mettre certains if et else ici pour traiter le message juste comme ça :
Si (inData == "+++ K") {/ / n’oubliez pas d’ajouter « \n » à la fin de la chaîne.
Serial.println ("OK. Appuyez sur h pour de l’aide.") ;
}
inData = "" ; Clear tampon reçu
}
}
}