Arduino browser baserade fjärrkontrollen (linux) (7 / 9 steg)
Steg 7: Ladda upp fjärrkontrollen koden till din arduino
Skapa en ny skiss och klistra in följande kod i den:
/*
* WebRemote
* En IR-LED måste vara ansluten till Arduino PWM stift 3.
* Version 0.1 juli, 2009
* Den här koden copyright Gregory Fenton, http://labby.co.uk/2012/02/irremote-arduino-experimentation/
* IRremote bibliotek copyright 2009 Ken Shirriff, http://arcfn.com
*/
#include
operatorn & mall inline Print << (Print & obj, T arg) {obj.print(arg); return obj;}
Boolean slutade = false;
char inData [64]; Storlek i förekommande fall
byte index = 0;
#define EOP "\n"
IRsend irsend;
void setup()
{
Serial.BEGIN(9600);
Seriella << "Serieport påbörjas" << EOP;
}
void loop()
{
Sträng pch, sType, sTemp;
char inChar, sTest, k;
int sBits;
långa Linnea;
int i, j.
While(1)
{
While(Serial.available() > 0)
{
inChar = Serial.read();
IF(index == 0)
{
pch = "";
}
om (inChar == '\r' || inChar == '\n' || inChar == '/') / / EOP
{
slut = sant;
index = 0;
bryta;
}
annat
{
IF(index < 64) / / Array storlek
{
pch += inChar;
index ++;
}
}
}
IF(ended)
{
Analysera data i inData här...
pch.toUpperCase();
Jag = pch.indexOf(' ')! = -1? pch.indexOf(' '): pch.indexOf(',');
sType = pch.substring(0,i);
i ++; hoppa över "," eller ""
Jag pekar nu för att starta av hex
j = pch.lastIndexOf(' ')! = -1? pch.lastIndexOf(' '): pch.lastIndexOf(','); j nu pekar på ',' eller ' ' efter hex
Linnea = 0;
sTemp = pch.substring (i, j);
IF(sTemp.substring(0,2) == String("0X"))
sTemp = sTemp.substring(2);
för (jag = 0; jag < sTemp.length(); i ++)
{
k = sTemp [i];
om (! () (k > = "0" & & k < = '9') || (k > = "A" & & k < = "F")))
bryta;
Linnea * = 16.
om (k > = "0" & & k < = '9')
Linnea += (k - '0');
annars om (k > = "A" & & k < = "F")
Linnea += ((k - "A") + 10);
om (! () (k > = "0" & & k < = '9') || (k > = "A" & & k < = "F")))
bryta;
}
sTemp = pch.substring(j+1);
sBits = 0;
för (jag = 0; jag < sTemp.length(); i ++)
{
k = sTemp [i];
sBits * = 10;
om (k > = "0" & & k < = '9')
sBits += (k - '0');
}
IF(sType.length() > 0)
{
Seriella << pch << EOP << "kod typ:" << sType << "Hex:";
Serial.Print(sHex,hex);
Seriella << "bitar:" << sBits;
}
Sändande (sType, Linnea, sBits);
pch = "";
slut = 0;
}
}
}
void sändande (sträng sType, lång Linnea, int sBits)
{
för (int jag = 0; jag < 2; i ++)
{
IF(sType.equals(String("RC6")))
{
irsend.sendRC6 (Linnea, sBits);
}
annars om (sType.equals(String("RC5")))
{
irsend.sendRC5 (Linnea, sBits);
}
annat if(sType.equals(String("SONY")))
{
irsend.sendSony (Linnea, sBits);
}
annat if(sType.equals(String("NEC")))
{
om (! jag) irsend.sendNEC (Linnea, sBits);
}
annat if(sType.equals(String("")))
{
Seriella << "Fördröja" << EOP;
Delay(450);
}
Delay(30);
}
}