Progress Update:
I have recently been able to toggle the relay via the Arduino. ![]()
After some additional digging, I discovered the following:
Turns out I didn't know how to use the capture software properly (probably still dont), and it ended up that I was missing an earlier start bit that I didn't see initially. I slowed my capture down to 1Khz, and learned that I needed a 470us start bit, followed by a 12ms delay, then the data (data only repeated 3x) .
I also learned that after the start bit, for whatever reason, I need to send my data 3 times. Not 100% sure why... might be a timing issue, or something else I am unaware of at this time. I don't have access to a fancy logic analyzer, so I'm out of luck here as best I can tell.
But in the end, I got it to work.
In case this helps anyone else out in the future, here are some specifics about the item I was working with:
Living Solutions
Outdoor 2-outlet remote control
Distributed by Walgreen's
model number YLT-11
UPC: 049022614611
PS: I bought 2 of them, and they each use the same remote control signal.
Here is my test code:
//Timings
int longDelay = 1250;
int shortDelay = 480;
//output pin that sends signal
int pin = 8;
void setup() {
 pinMode(pin, OUTPUT);
 digitalWrite(pin,LOW);
 Serial.begin(115200);
}
void loop() {
 //Turn it On
 burst(pin);
 for(int i = 0; i < 3; i++){
  common(pin);
  common(pin);
  common(pin);
  common(pin);
  shortOn(pin);
  common(pin);
  shortOn(pin);
  shortOn(pin);
  common(pin);
  common(pin);
  delayMicroseconds(12000); Â
 }
 //Admire
 delay(2000);
 //now turn it off
 burst(pin);
 for(int i = 0; i< 3; i++){
  common(pin);
  common(pin);
  common(pin);
  common(pin);
  common(pin);
  longOn(pin);
  longOn(pin);
  longOn(pin);
  shortOn(pin);  Â
  common(pin);
  shortOn(pin);Â
  delayMicroseconds(12000); Â
 }
 //Admire
 delay(2000);
}
void burst(int pinNum){
 digitalWrite(pinNum,HIGH);
 delayMicroseconds(470);
 digitalWrite(pinNum,LOW);
 //short off
 delayMicroseconds(12000);
}
void common(int pinNum){
 //long on
 digitalWrite(pinNum,HIGH);
 delayMicroseconds(longDelay);
 digitalWrite(pinNum,LOW);
 //short off
 delayMicroseconds(shortDelay);
 //short on
 digitalWrite(pinNum,HIGH);
 delayMicroseconds(shortDelay);
 digitalWrite(pinNum,LOW); Â
 //long off
 delayMicroseconds(longDelay);
}
void shortOn(int pinNum){
   //short on
 digitalWrite(pinNum,HIGH);
 delayMicroseconds(shortDelay);
 digitalWrite(pinNum,LOW); Â
 delayMicroseconds(longDelay);
}
void longOn(int pinNum){
  //long on
 digitalWrite(pinNum,HIGH);
 delayMicroseconds(longDelay);
 digitalWrite(pinNum,LOW);
 //short off
 delayMicroseconds(shortDelay);
}