Paso 5:
El código siguiente se modifica a partir rf original sketch http://rayshobby.net/?p=2427 de Ray Wang
Mi dibujo de ejemplo
Uso de la librería irremote
#include < IRremote.h >
Irsend de IRsend;
Buffer para almacenar los comandos entrantes del puerto serial/bluetooth
InData cadena;
define el pin que enviará los datos de rf
int sendPin = 10;
define cuánto tiempo mantener una ráfaga de rf
#define DELAYSHORT 160
#define DELAYLONG 500
{} Static void ookPulse (int a, int off)
digitalWrite (sendPin, HIGH);
delayMicroseconds(on);
digitalWrite (sendPin, bajo);
delayMicroseconds(off);
}
Static void pt2262Send (uint14_t firma, uint10_t comando) {}
byte i, k;
enviar 14 veces
para (k = 0; k < 14; k ++) {}
enviar firma primero
para (i = 0; i < 14; i ++) {}
Si ((firma > >(13-i)) & 0 x 1) {}
ookPulse (DELAYLONG, DELAYSHORT);
} else {}
ookPulse (DELAYSHORT, DELAYLONG);
}
}
para (i = 0; i < 10; i ++) {}
Si ((comando > >(9-i)) & 0 x 1) {}
ookPulse (DELAYLONG, DELAYSHORT);
} else {}
ookPulse (DELAYSHORT, DELAYLONG);
}
}
terminar con un '0'
ookPulse (DELAYSHORT, DELAYLONG);
corto retardo
Delay(5);
}
}
void setup() {}
Serial.Begin(9600);
pinMode (sendPin, salida);
}
void loop() {}
mientras que (Serial.available() > 0)
{
char recibido = Serial.read();
inData += recibidos;
Mensaje de proceso cuando se recibe el carácter de K
Si (recibido == 'K')
{
Serial.Print ("Arduino recibida:");
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);}
PARPADEA CADA CONEXIÓN Y DESCONEXIÓN EN UN PÁNICO
Si (inData == "LIGHTPANICK") {para (int i = 2; i < 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);
}
Usted puede poner algunos if y otra aquí para procesar el mensaje sólo como eso:
Si (inData == "+++ K") {/ / no te olvides de añadir "\n" al final de la cadena.
Serial.println ("OK. Pulse h para la ayuda.");
}
inData = ""; Clear buffer recibido
}
}
}