Stap 7: De afstandsbediening code uploaden naar je arduino
Maak een nieuwe schets en plak de volgende code erin:
/*
* WebRemote
* Een IR-LED moet worden aangesloten op de Arduino PWM pin 3.
* Versie 0.1 juli 2009
* Deze code copyright Gregory Fenton, http://labby.co.uk/2012/02/irremote-arduino-experimentation/
* IRremote bibliotheek copyright 2009 Ken Shirriff, http://arcfn.com
*/
#include
sjabloon inline Print & exploitant << (Print & obj, T arg) {obj.print(arg); terugkeer obj;}
Boolean eindigde = false;
char inData [64]; Grootte als passende
byte index = 0;
#define EOP "\n"
IRsend irsend;
VOID Setup
{
Serial.begin(9600);
Seriële << "Serial port geïnitialiseerd" << EOP;
}
void loop
{
String pch, bloedstelpend, sTemp;
char inChar, sTest, k;
int sBits;
lange sHex;
int i, j;
while(1)
{
while(Serial.available() > 0)
{
inChar = Serial.read();
if(index == 0)
{
PCH = "";
}
Als (inChar == '\r' || inChar == '\n' || inChar == '/') / / EOP
{
eindigde = true;
index = 0;
breken;
}
anders
{
if(index < 64) / / Array van grootte
{
PCH += inChar;
index ++;
}
}
}
if(ended)
{
Parseren van de gegevens in inData hier...
pch.toUpperCase();
Ik = pch.indexOf(' ')! = -1? pch.indexOf(' '): pch.indexOf(',');
Bloedstelpend = pch.substring(0,i);
i ++; overslaan ',' of ' '
ik nu wijst om te beginnen voor hex
j = pch.lastIndexOf(' ')! = -1? pch.lastIndexOf(' '): pch.lastIndexOf(','); j verwijst nu naar ',' of ' ' na hex
sHex = 0;
sTemp = pch.substring (i, j);
if(sTemp.substring(0,2) == String("0X"))
sTemp = sTemp.substring(2);
voor (ik = 0; ik < sTemp.length(); i ++)
{
k = sTemp [i];
Als (! () (k > = '0' & & k < = '9') || (k > = "A" & & k < = 'F')))
breken;
sHex * = 16;
Als (k > = '0' & & k < = '9')
sHex += (k - '0');
anders als (k > = "A" & & k < = 'F')
sHex += ((k - 'A') + 10);
Als (! () (k > = '0' & & k < = '9') || (k > = "A" & & k < = 'F')))
breken;
}
sTemp = pch.substring(j+1);
sBits = 0;
voor (ik = 0; ik < sTemp.length(); i ++)
{
k = sTemp [i];
sBits * = 10;
Als (k > = '0' & & k < = '9')
sBits += (k - '0');
}
if(sType.length() > 0)
{
Seriële << pch << EOP << "type Code:" << bloedstelpend << "Hex:";
Serial.Print(sHex,hex);
Seriële << "Bits:" << sBits;
}
Zending (bloedstelpend, sHex, sBits);
PCH = "";
eindigde = 0;
}
}
}
VOID zending (String bloedstelpend, lange sHex, int sBits)
{
for (int i = 0; ik < 2; i ++)
{
if(sType.equals(String("RC6")))
{
irsend.sendRC6 (sHex, sBits);
}
anders als (sType.equals(String("RC5")))
{
irsend.sendRC5 (sHex, sBits);
}
anders if(sType.equals(String("SONY")))
{
irsend.sendSony (sHex, sBits);
}
anders if(sType.equals(String("NEC")))
{
Als (! ik) irsend.sendNEC (sHex, sBits);
}
anders if(sType.equals(String("")))
{
Seriële << "Vertragen" << EOP;
delay(450);
}
delay(30);
}
}