This is my first project with arduino. I am fairly familiar with if statements and variables and such from two and a half years of working with tasker for android. My first project with arduino was to control my TV using the arduino xbee and tasker. I have the basics figured out but, I hit a hickup. When I try for just power on and off or just channel up or down ect. I have no issues but when I put them all together in the code I get stuck with the IR LED on and never shutting off? Here is an example of the code I am using... Any help as to what I did wrong would be appriciated.
// See the full tutorial at Sensor tutorials - IR remote receiver/decoder tutorial
// this code is public domain, please enjoy!
int IRledPin = 13;
void setup() {
Serial.begin(9600);
pinMode(IRledPin, OUTPUT);
Serial.println("Ready");
}
void loop()
{
delay(10);
OnOffCode();
if (Serial.available() > 0)
{
int data = Serial.read(); // read the incoming byte:
switch(data)
{
case 'a' : Serial.println("On/Off"); OnOffCode(); break;
case 's' : Serial.println("Channel Up"); ProgramPlusCode(); break;
case 'd' : Serial.println("Channel Down"); ProgramMinusCode(); break;
case 'f' : Serial.println("Volume Up"); VolumePlusCode(); break;
case 'g' : Serial.println("Volume Down"); VolumeMinusCode(); break;
case 'h' : Serial.println("Mute"); MuteCode(); break;
default : Serial.println("Invalid character"); break;
}
}
}
void pulseIR(long microsecs) {
// we'll count down from the number of microseconds we are told to wait
cli(); // this turns off any background interrupts
while (microsecs > 0) {
// 38 kHz is about 13 microseconds high and 13 microseconds low
digitalWrite(IRledPin, HIGH); // this takes about 3 microseconds to happen
delayMicroseconds(10); // hang out for 10 microseconds, you can also change this to 9 if its not working
digitalWrite(IRledPin, LOW); // this also takes about 3 microseconds
delayMicroseconds(10); // hang out for 10 microseconds, you can also change this to 9 if its not working
// so 26 microseconds altogether
microsecs -= 26;
}
sei(); // this turns them back on
}
void OnOffCode() {
delayMicroseconds(34496);
pulseIR(880);
delayMicroseconds(860);
pulseIR(880);
delayMicroseconds(840);
pulseIR(1780);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(860);
pulseIR(880);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(1720);
pulseIR(900);
delayMicroseconds(840);
pulseIR(1780);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(23464);
pulseIR(900);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(860);
pulseIR(1760);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(860);
pulseIR(880);
delayMicroseconds(860);
pulseIR(880);
delayMicroseconds(860);
pulseIR(880);
delayMicroseconds(860);
pulseIR(880);
delayMicroseconds(1720);
pulseIR(880);
delayMicroseconds(860);
pulseIR(1780);
delayMicroseconds(820);
pulseIR(880);
}
void ProgramPlusCode() {
delayMicroseconds(44020);
pulseIR(900);
delayMicroseconds(840);
pulseIR(1760);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(860);
pulseIR(920);
delayMicroseconds(820);
pulseIR(880);
delayMicroseconds(860);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(1700);
pulseIR(1780);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(840);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(23424);
pulseIR(920);
delayMicroseconds(840);
pulseIR(1800);
delayMicroseconds(800);
pulseIR(900);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(860);
pulseIR(900);
delayMicroseconds(820);
pulseIR(880);
delayMicroseconds(1740);
pulseIR(1800);
delayMicroseconds(800);
pulseIR(920);
delayMicroseconds(820);
pulseIR(880);
delayMicroseconds(860);
pulseIR(900);
}
void ProgramMinusCode() {
delayMicroseconds(6692);
pulseIR(920);
delayMicroseconds(820);
pulseIR(880);
delayMicroseconds(860);
pulseIR(1760);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(860);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(1720);
pulseIR(1800);
delayMicroseconds(800);
pulseIR(900);
delayMicroseconds(840);
pulseIR(920);
delayMicroseconds(820);
pulseIR(880);
delayMicroseconds(1720);
pulseIR(920);
delayMicroseconds(22584);
pulseIR(920);
delayMicroseconds(820);
pulseIR(880);
delayMicroseconds(860);
pulseIR(1780);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(880);
delayMicroseconds(860);
pulseIR(920);
delayMicroseconds(1680);
pulseIR(1780);
delayMicroseconds(840);
pulseIR(880);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(840);
pulseIR(920);
delayMicroseconds(1700);
pulseIR(880);
}
void VolumePlusCode() {
delayMicroseconds(57164);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(1800);
delayMicroseconds(800);
pulseIR(920);
delayMicroseconds(820);
pulseIR(9200);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(840);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(1700);
pulseIR(1800);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(23444);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(1800);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(1680);
pulseIR(1820);
delayMicroseconds(800);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
}
void VolumeMinusCode() {
delayMicroseconds(22168);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(840);
pulseIR(1800);
delayMicroseconds(800);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(1700);
pulseIR(1800);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(1700);
pulseIR(900);
delayMicroseconds(22584);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(1800);
delayMicroseconds(800);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(840);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(1700);
pulseIR(1800);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(1700);
pulseIR(900);
}
void MuteCode() {
delayMicroseconds(21172);
pulseIR(900);
delayMicroseconds(820);
pulseIR(1800);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(1700);
pulseIR(920);
delayMicroseconds(820);
pulseIR(1780);
delayMicroseconds(1700);
pulseIR(900);
delayMicroseconds(22584);
pulseIR(920);
delayMicroseconds(820);
pulseIR(1800);
delayMicroseconds(800);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(820);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(840);
pulseIR(900);
delayMicroseconds(820);
pulseIR(920);
delayMicroseconds(1700);
pulseIR(900);
delayMicroseconds(840);
pulseIR(1800);
delayMicroseconds(1660);
pulseIR(900);
}