Ok.. so here is what I wrote out at the simplest form. Unfortunately, they microsecond delay isn't accurate when it comes to viewing it on the analyzer. But I estimated as much as I could.
I have attached a screen shot of both signals being compared. D0 is the original signal from the controller and D4 is the Arduino. You can tell its just slightly shorter than the original, but having a hard time fine tuning the timing to make it work.
int oneHigh = 3;
int oneLow = 17;
int zeroHigh = 3;
int zeroLow = 17;
int byteDelay = 11;
void setup() {
pinMode(14, OUTPUT);
}
void loop() {
for (int i = 0; i < 8; i++) {
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
}
delayMicroseconds(byteDelay);
for (int i = 0; i < 8; i++) {
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
}
delayMicroseconds(byteDelay);
//UNKNOWN
for (int i = 0; i < 4; i++) {
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
}
//Foul Player #
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
// Foul Player TENS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
// Foul Player ONES
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//Visitor Fouls TENS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Visitor Fouls ONES
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//Home Fouls TENS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Home Fouls ONES
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//UNKNOWN
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//UNKNOWN
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
//UNKNOWN
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//Home Score HUNDREDS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Visitor Score HUNDREDS
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
//Home BONUS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Visitor BONUS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Home POSS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Visitor POSS
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
//UNKNOWN
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//UNKNOWN
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//PERIOD
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//Visitor Score TENS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Visitor Score ONES
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//Home Score TENS
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Home Score ONES
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//Seconds TENS
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
//Seconds ONES
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
//Minutes TENS
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
//Minutes ONES
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneHigh);
digitalWrite(14, HIGH);
delayMicroseconds(oneLow);
digitalWrite(14, LOW);
delayMicroseconds(oneLow);
digitalWrite(14, HIGH);
delayMicroseconds(oneHigh);
delayMicroseconds(byteDelay);
delay(45);
}