Paso 7: Añadir el código de control remoto a tu arduino
Crear un dibujo nuevo y pegue el código siguiente en él:
/*
* WebRemote
* Un LED IR se debe conectado al Arduino PWM pin 3.
* Versión 0.1 de julio de 2009
* Este código autor Gregory Fenton, http://labby.co.uk/2012/02/irremote-arduino-experimentation/
* Biblioteca iRremote copyright 2009 Ken Shirriff, http://arcfn.com
*/
#include
plantilla en línea impresión & operador << (Print & obj, T arg) {obj.print(arg); return obj;}
Boolean terminado = false;
inData Char [64]; Tamaño según corresponda
Índice de byte = 0;
#define EOP "\n"
Irsend de IRsend;
void setup()
{
Serial.Begin(9600);
Serie << "Puerto serie inicializado" << EOP;
}
void loop()
{
Cadena de pch, sType, sTemp;
char a inChar, sTest, k;
int sBits;
sHex largo;
int i, j;
while(1)
{
while(serial.Available() > 0)
{
inChar = Serial.read();
if(index == 0)
{
PCH = "";
}
Si (inChar == '\r' || inChar == '\n' || inChar == '/') / / EOP
{
terminado = true;
índice = 0;
rotura;
}
otra cosa
{
if(index < 64) / / Array de tamaño
{
PCH += inChar;
Índice ++;
}
}
}
if(ended)
{
Analizar los datos de inData aquí...
pch.toUpperCase();
¿i = pch.indexOf(' ')! = -1? pch.indexOf(' '): pch.indexOf(',');
sType = pch.substring(0,i);
i ++; pasar por alto ',' o ' '
Yo ahora apunta para inicio de hexagonal
¿j = pch.lastIndexOf(' ')! = -1? pch.lastIndexOf(' '): pch.lastIndexOf(','); j ahora apunta a ',' o ' ' después de hex
sHex = 0;
sTemp = pch.substring (i, j);
if(sTemp.substring(0,2) == String("0X"))
sTemp = sTemp.substring(2);
para (i = 0; i < sTemp.length(); i ++)
{
k = sTemp [i];
Si (! () (k > = '0' & & k < = '9') || (k > = 'A' & & k < = 'F')))
rotura;
sHex * = 16;
Si (k > = '0' & & k < = '9')
sHex += (k - '0');
else if (k > = 'A' & & k < = 'F')
sHex += ((k - 'A') + 10);
Si (! () (k > = '0' & & k < = '9') || (k > = 'A' & & k < = 'F')))
rotura;
}
sTemp = pch.substring(j+1);
sBits = 0;
para (i = 0; i < sTemp.length(); i ++)
{
k = sTemp [i];
sBits * = 10;
Si (k > = '0' & & k < = '9')
sBits += (k - '0');
}
if(sType.length() > 0)
{
Serie << pch << EOP << "código tipo:" << sType << "Hex:";
Serial.Print(sHex,HEX);
Serie << "Bits:" << sBits;
}
sendIt (sType, sHex, sBits);
PCH = "";
fin = 0;
}
}
}
sendIt vacío (cadena sType, largo sHex, int sBits)
{
para (int i = 0; i < 2; i ++)
{
if(sType.Equals(String("RC6")))
{
irsend.sendRC6 (sHex, sBits);
}
else if (sType.equals(String("RC5")))
{
irsend.sendRC5 (sHex, sBits);
}
if(sType.equals(String("SONY"))) más
{
irsend.sendSony (sHex, sBits);
}
if(sType.equals(String("NEC"))) más
{
Si (! i) irsend.sendNEC (sHex, sBits);
}
if(sType.equals(String(""))) más
{
Serie << "Retrasar" << EOP;
Delay(450);
}
Delay(30);
}
}