adding Synchonizer prior-art code from KHM 2010 / Martin Nawrath, Kunsthochschule fuer Medien Koeln, Academy of Media Arts Cologne

This commit is contained in:
foley@ru.is
2013-09-10 22:35:46 +00:00
parent 1e6f137a76
commit f66c24d38a
2 changed files with 791 additions and 0 deletions

View File

@@ -0,0 +1,423 @@
/* DVD IR Synchronizer
*
* connect a IR LED to: Anode pin9, Cathode pin8
* KHM 2010 / Martin Nawrath
* Kunsthochschule fuer Medien Koeln
* Academy of Media Arts Cologne
*/
#include <MsTimer2.h>
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
int pinIR_OUT =9;
int pinGND =8;
int pinLED =13;
int bb;
int tics;
int secs;
int f_sec;
int f_sync;
int playtime= 40*60+30; // set here ypur DVD title playtime
void setup() {
pinMode(pinGND,OUTPUT);
Serial.begin(115200);
Serial.println("DVD Synchronizer");
Serial.print("Playtime: ");
secs=playtime;
Serial.print("sec:");
Serial.print(secs);
Serial.print(" / mm:ss ");
Serial.print(secs/60);
Serial.print(":");
Serial.print(secs % 60);
Serial.println("");
TCCR1A = 0;
cbi(TCCR1A,COM1A0); // timer1 counter control
sbi(TCCR1A,COM1A1); // clear on compare match
cbi(TCCR1A,WGM10); // waveform generation mode 14 TOP=ICR1
sbi(TCCR1A,WGM11);
sbi(TCCR1B,WGM12);
sbi(TCCR1B,WGM13);
sbi(TCCR1B,CS10); // timer 1 clock select
cbi(TCCR1B,CS11); // prescaler=1
cbi(TCCR1B,CS12);
int f_carrier = 37 ; // choose right IR carrier frequency
ICR1 = 16000 / f_carrier ;
OCR1A = 200 ; // Leistung der Sendediode 0..200
pinMode(pinIR_OUT,OUTPUT);
pinMode(pinLED,OUTPUT);
MsTimer2::set(10, ms10); // 10ms period
MsTimer2::start();
Serial.println("play");
send_play();
delay(7000);
secs=playtime;
}
/********************************************************************/
void loop() {
if(f_sec){
f_sec=0;
Serial.print("sec:");
Serial.print(secs);
Serial.print(" / mm:ss ");
Serial.print(secs/60);
Serial.print(":");
Serial.print(secs % 60);
Serial.println("");
if (secs >= playtime){
f_sync=1;
Serial.println("Sync");
Serial.println("pause");
send_pause();
delay(2000);
Serial.println("rev");
send_rev();
delay(2000);
Serial.println("play");
send_play();
secs=0;
f_sync=0;
}
}
}
/********************************************************************/
void ms10() {
tics++;
if (tics >= 100) {
tics=0;
secs++;
f_sec=1;
PORTB ^= 32;
}
if (f_sync==1)
if ( tics % 10 == 0) PORTB ^= 32;
}
/********************************************************************/
void send_stop() {
ICR1 = 16000 /40; // ICR1 = 16000 /40; // IR carrier frequency
sbi(DDRB,1); delayMicroseconds(2400 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 1 ton:2400 toff: 572
sbi(DDRB,1); delayMicroseconds( 648 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 3 ton: 648 toff: 564
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 5 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 7 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds(1236 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 9 ton:1236 toff: 564
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 11 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix: 13 ton:1228 toff: 576
sbi(DDRB,1); delayMicroseconds( 636 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix: 15 ton: 636 toff: 576
sbi(DDRB,1); delayMicroseconds( 636 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 17 ton: 636 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix: 19 ton:1228 toff: 576
sbi(DDRB,1); delayMicroseconds( 600 ); cbi(DDRB,1); delayMicroseconds( 612 ); // ix: 21 ton: 600 toff: 612
sbi(DDRB,1); delayMicroseconds(1188 ); cbi(DDRB,1); delayMicroseconds( 612 ); // ix: 23 ton:1188 toff: 612
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 600 ); // ix: 25 ton:1192 toff: 600
sbi(DDRB,1); delayMicroseconds(1200 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 27 ton:1200 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 29 ton: 608 toff: 564
sbi(DDRB,1); delayMicroseconds( 648 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 31 ton: 648 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 33 ton:1228 toff: 564
sbi(DDRB,1); delayMicroseconds( 648 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 35 ton: 648 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 37 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 600 ); // ix: 39 ton:1228 toff: 600
sbi(DDRB,1); delayMicroseconds( 612 ); cbi(DDRB,1); delayMicroseconds(13252 ); // ix: 41 ton: 612 toff:13252
sbi(DDRB,1); delayMicroseconds(2400 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 43 ton:2400 toff: 608
sbi(DDRB,1); delayMicroseconds( 612 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 45 ton: 612 toff: 564
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 47 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 49 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds(1196 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 51 ton:1196 toff: 604
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 53 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 612 ); // ix: 55 ton:1192 toff: 612
sbi(DDRB,1); delayMicroseconds( 600 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 57 ton: 600 toff: 572
sbi(DDRB,1); delayMicroseconds( 648 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 59 ton: 648 toff: 564
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 61 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 63 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix: 65 ton:1228 toff: 576
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 67 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 69 ton:1228 toff: 564
sbi(DDRB,1); delayMicroseconds( 612 ); cbi(DDRB,1); delayMicroseconds( 600 ); // ix: 71 ton: 612 toff: 600
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix: 73 ton: 608 toff: 576
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 75 ton:1228 toff: 564
sbi(DDRB,1); delayMicroseconds( 648 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 77 ton: 648 toff: 572
sbi(DDRB,1); delayMicroseconds( 600 ); cbi(DDRB,1); delayMicroseconds( 612 ); // ix: 79 ton: 600 toff: 612
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 81 ton:1228 toff: 564
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds(13256 ); // ix: 83 ton: 608 toff:13256
sbi(DDRB,1); delayMicroseconds(2436 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 85 ton:2436 toff: 572
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 87 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 89 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 91 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 93 ton:1232 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 95 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 97 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 99 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:101 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:103 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:105 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:107 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix:109 ton:1228 toff: 576
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix:111 ton:1228 toff: 564
sbi(DDRB,1); delayMicroseconds( 648 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix:113 ton: 648 toff: 564
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:115 ton: 608 toff: 572
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 600 ); // ix:117 ton:1232 toff: 600
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix:119 ton: 608 toff: 576
sbi(DDRB,1); delayMicroseconds( 636 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:121 ton: 636 toff: 572
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:123 ton:1232 toff: 572
sbi(DDRB,1); delayMicroseconds( 600 ); cbi(DDRB,1);
}
/********************************************************************/
void send_play() {
ICR1 = 16000 /40; // IR carrier frequency
sbi(DDRB,1); delayMicroseconds(2400 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 1 ton:2400 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 3 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 5 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 7 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 9 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 11 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 13 ton:1228 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 15 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 17 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 19 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 21 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 23 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 25 ton:1192 toff: 604
sbi(DDRB,1); delayMicroseconds(1236 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 27 ton:1236 toff: 564
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 29 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 31 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 33 ton:1232 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 35 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 37 ton: 608 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 39 ton:1228 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds(13256 ); // ix: 41 ton: 608 toff:13256
sbi(DDRB,1); delayMicroseconds(2400 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 43 ton:2400 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 45 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 47 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 49 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 51 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 53 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 55 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 57 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 59 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 61 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 63 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 65 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 67 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 69 ton:1232 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 71 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 73 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 75 ton:1232 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 77 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 79 ton: 608 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 81 ton:1192 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds(13252 ); // ix: 83 ton: 608 toff:13252
sbi(DDRB,1); delayMicroseconds(2440 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 85 ton:2440 toff: 572
sbi(DDRB,1); delayMicroseconds( 600 ); cbi(DDRB,1); delayMicroseconds( 576 ); // ix: 87 ton: 600 toff: 576
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 89 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 91 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 93 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 95 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 97 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 99 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:101 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:103 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:105 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:107 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:109 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:111 ton:1232 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:113 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix:115 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds(1196 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix:117 ton:1196 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:119 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:121 ton: 644 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:123 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1);
}
/********************************************************************/
void send_pause() {
ICR1 = 16000 /40; // IR carrier frequency
sbi(DDRB,1); delayMicroseconds(2404 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 1 ton:2404 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 3 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 5 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 7 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 9 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 11 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 13 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 15 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 17 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 19 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 21 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 23 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 25 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds(1236 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 27 ton:1236 toff: 564
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 29 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 31 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds(1236 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 33 ton:1236 toff: 564
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 35 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 37 ton: 644 toff: 572
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 39 ton:1232 toff: 564
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds(12664 ); // ix: 41 ton: 608 toff:12664
sbi(DDRB,1); delayMicroseconds(2408 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 43 ton:2408 toff: 604
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 45 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 47 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 49 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 51 ton:1232 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 53 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 55 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 57 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 59 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 61 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 63 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 65 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 67 ton:1228 toff: 604
sbi(DDRB,1); delayMicroseconds(1196 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 69 ton:1196 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 71 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 73 ton: 644 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 75 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 77 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 79 ton: 608 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 81 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds(12628 ); // ix: 83 ton: 644 toff:12628
sbi(DDRB,1); delayMicroseconds(2408 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 85 ton:2408 toff: 604
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 87 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 89 ton: 608 toff: 564
sbi(DDRB,1); delayMicroseconds( 648 ); cbi(DDRB,1); delayMicroseconds( 564 ); // ix: 91 ton: 648 toff: 564
sbi(DDRB,1); delayMicroseconds(1236 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 93 ton:1236 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 95 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 97 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 99 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix:101 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix:103 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:105 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:107 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix:109 ton:1228 toff: 604
sbi(DDRB,1); delayMicroseconds(1196 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix:111 ton:1196 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:113 ton: 608 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:115 ton: 644 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:117 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix:119 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:121 ton: 608 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:123 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1);
}
/********************************************************************/
void send_rev() {
ICR1 = 16000 /40; // IR carrier frequency
sbi(DDRB,1); delayMicroseconds(2400 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 1 ton:2400 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 3 ton: 644 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 5 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 7 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 9 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 11 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 13 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 15 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 17 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 19 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 21 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 23 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 25 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds(1232 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 27 ton:1232 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 29 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 31 ton: 608 toff: 608
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 33 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 35 ton: 608 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 37 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 39 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds(13808 ); // ix: 41 ton: 644 toff:13808
sbi(DDRB,1); delayMicroseconds(2436 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 43 ton:2436 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 45 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 47 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 49 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 51 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 53 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 55 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 57 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 59 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 61 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 63 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 65 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 67 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 69 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 71 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 73 ton: 644 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 75 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 77 ton: 608 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 79 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 81 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds(13844 ); // ix: 83 ton: 644 toff:13844
sbi(DDRB,1); delayMicroseconds(2436 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 85 ton:2436 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 87 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 89 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix: 91 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 604 ); // ix: 93 ton: 608 toff: 604
sbi(DDRB,1); delayMicroseconds(1188 ); cbi(DDRB,1); delayMicroseconds( 612 ); // ix: 95 ton:1188 toff: 612
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix: 97 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix: 99 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:101 ton: 644 toff: 568
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:103 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds( 640 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:105 ton: 640 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:107 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:109 ton:1228 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:111 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 608 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix:113 ton: 608 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:115 ton: 604 toff: 572
sbi(DDRB,1); delayMicroseconds(1228 ); cbi(DDRB,1); delayMicroseconds( 568 ); // ix:117 ton:1228 toff: 568
sbi(DDRB,1); delayMicroseconds( 644 ); cbi(DDRB,1); delayMicroseconds( 572 ); // ix:119 ton: 644 toff: 572
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix:121 ton: 604 toff: 608
sbi(DDRB,1); delayMicroseconds(1192 ); cbi(DDRB,1); delayMicroseconds( 608 ); // ix:123 ton:1192 toff: 608
sbi(DDRB,1); delayMicroseconds( 604 ); cbi(DDRB,1);
}