Trying to turn TV on/off with Arduino + Infrared. Code will only turn TV off.

After a lot of trial and error and trying different methods I was finally able to get my Arduino to send an IR signal my TV could interpret. Using an IR Reciever I got the pulses from my physical remote and then coded them in to send via the IR LED. Reading the IR code from my remote when I turn it on vs off is the same but my TV will turn off, but won't turn it on. I am at a complete loss, please help.

My TV is a Sceptre which is an obscure brand and part of my issue, another thing though not sure if it matters, when my TV turns on it actually sends an IR blast out. Not sure why.

This will turn the TV off but not on.

pulseIR(2500);
delayMicroseconds(580);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(600);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(580);
pulseIR(1300);
delayMicroseconds(540);
pulseIR(680);
delayMicroseconds(560);
pulseIR(640);
delayMicroseconds(580);
pulseIR(1280);
delayMicroseconds(560);
pulseIR(680);
delayMicroseconds(560);
pulseIR(660);
delayMicroseconds(560);
pulseIR(680);
delayMicroseconds(560);
pulseIR(640);
delayMicroseconds(26400);
pulseIR(2520);
delayMicroseconds(560);
pulseIR(1280);
delayMicroseconds(560);
pulseIR(700);
delayMicroseconds(520);
pulseIR(1300);
delayMicroseconds(540);
pulseIR(700);
delayMicroseconds(540);
pulseIR(1280);
delayMicroseconds(560);
pulseIR(680);
delayMicroseconds(560);
pulseIR(660);
delayMicroseconds(560);
pulseIR(1300);
delayMicroseconds(540);
pulseIR(680);
delayMicroseconds(560);
pulseIR(660);
delayMicroseconds(560);
pulseIR(680);
delayMicroseconds(540);
pulseIR(680);
delayMicroseconds(26380);
pulseIR(2520);
delayMicroseconds(540);
pulseIR(1280);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(580);
pulseIR(1300);
delayMicroseconds(540);
pulseIR(680);
delayMicroseconds(560);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(680);
delayMicroseconds(540);
pulseIR(680);
delayMicroseconds(560);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(580);
pulseIR(660);
delayMicroseconds(580);
pulseIR(660);
delayMicroseconds(560);
pulseIR(680);
delayMicroseconds(26360);
pulseIR(2500);
delayMicroseconds(580);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(660);
delayMicroseconds(580);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(580);
pulseIR(1300);
delayMicroseconds(560);
pulseIR(660);
delayMicroseconds(560);
pulseIR(660);
delayMicroseconds(560);
pulseIR(1280);
delayMicroseconds(580);
pulseIR(660);
delayMicroseconds(560);
pulseIR(680);
delayMicroseconds(540);
pulseIR(660);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(26400);
pulseIR(2500);
delayMicroseconds(580);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(600);
pulseIR(1240);
delayMicroseconds(600);
pulseIR(640);
delayMicroseconds(580);
pulseIR(1280);
delayMicroseconds(560);
pulseIR(660);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(580);
pulseIR(1260);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(600);
pulseIR(640);
delayMicroseconds(580);
pulseIR(640);
delayMicroseconds(580);
pulseIR(660);

Probably NEC protocol.

Use the Ken Shirriff IR library.

.

I tried using that originally and couldn't get TV to respond to anything. Two random times out of 100 actually turned the volume down, but could not get it to do it again. Other buttons using this method work, just not power ON.

It may be your TX LED is the wrong IR frequency for your TV and nothing to do with the sketch you tried.
Some operate at 950nm others are 850nm.

.

All the other buttons I have tried work, The number 5, Source, Down, OK, Menu, Source... Power code works only if TV is on, once it is off, it does nothing. That's the only thing I have tried that hasn't worked, and sadly it's the point of what I am doing :frowning:

I even tried a different IR LED. The remote emits the same exact pattern when turning on or off yet when I send the same burst the TV will not respond if it's off. Do I h ave to do something differently? I've googled and come up short, I cannot come up with anything :frowning:

Time to take an oscilloscope out and look at what's happening and what should be happing.

.

Must be something different. Could be what you have captured is not one individual power toggle command but multiple commands sent one after the other. You could be rapidly sending on,off,on,off to the TV. In which case the last command it sees is "off".

Also watch out for toggle bits. You press a button once and the remote sends a certain data string, if you press that same button again it will send another version of that data string.

If you press 1 or source in your normal remote does that turn the TV on? What you have stumbled on is something that's quite often hard to do. It's nice to have seperate on off commands rather than just a power toggle.