Låg kostnad IR-dekoder (5 / 6 steg)
Steg 5: kodning:
#include < LiquidCrystal.h >
#include < IRremote.h >
LiquidCrystal lcd (7,6, 5, 4, 3, 2);
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultat.
void setup()
{
Serial.BEGIN(9600);
pinMode(13,OUTPUT);
digitalWrite(13,1);
LCD.BEGIN (16, 2);
irrecv.enableIRIn(); Starta mottagaren
}
Dumpar ut decode_results struktur.
Kalla detta efter IRrecv::decode()
void * Undvik compiler problemet
void dump(void *v) {
decode_results * resultat = (decode_results *) v
void dump(decode_results *results) {
lcd.setCursor (0, 0);
int count = resultat -> rawlen;
om (resultat -> decode_type == okänd) {
Serial.Print ("okänd kodning:");
LCD.Print ("okänd kodning:");
}
annars om (resultat -> decode_type == NEC) {
Serial.Print ("avkodas NEC:");
LCD.Print ("avkodas NEC:");
}
annars om (resultat -> decode_type == SONY) {
Serial.Print ("avkodas SONY:");
LCD.Print ("avkodas SONY:");
}
annars om (resultat -> decode_type == RC5) {
Serial.Print ("avkodas RC5:");
LCD.Print ("avkodas RC5:");
}
annars om (resultat -> decode_type == RC6) {
Serial.Print ("avkodas RC6:");
LCD.Print ("avkodas RC6:");
}
annars om (resultat -> decode_type == PANASONIC) {
Serial.Print ("avkodas PANASONIC - adress:");
Serial.Print (resultat -> panasonicAddress, HEX);
Serial.Print ("värde:");
}
annars om (resultat -> decode_type == LG) {
Serial.Print ("avkodas LG:");
LCD.Print ("avkodas LG:");
}
annars om (resultat -> decode_type == JVC) {
Serial.Print ("avkodas JVC:");
LCD.Print ("avkodas JVC:");
}
lcd.setCursor (0, 1);
Serial.Print (resultat -> värde, HEX);
LCD.Print (resultat -> värde, HEX);
Serial.Print ("(");
Serial.Print (resultat -> bitar, DEC).
Serial.println ("bitar)");
Serial.Print ("Raw (");
Serial.Print (antal, DEC);
Serial.Print("):");
för (int jag = 0; jag < greve; i ++) {
om ((i % 2) == 1) {
Serial.Print (resultat -> rawbuf [i] * USECPERTICK, DEC);
}
annat {
Serial.Print (-(int) resultat -> rawbuf [i] * USECPERTICK, DEC);
}
Serial.Print("");
}
Serial.println("");
}
void loop() {
om (irrecv.decode (& resultat)) {
Serial.println (results.value, HEX);
dump (& resultat);
irrecv.Resume(); Ta emot nästa värde
}
}
För denna kod körs du kommer att behöva en IR-fjärrbibliotek.
Jusr Goole det eller du kan ladda ner från här också.