reorganizing project to more general synchronizer in preparation for export/delivery to RVK museum.

This commit is contained in:
foley@ru.is
2013-09-22 16:58:16 +00:00
parent 10423b4755
commit 138877a1ef
33 changed files with 80 additions and 0 deletions

View File

@@ -0,0 +1,227 @@
/* IR Remote control
* capture a infrared burst from a remote control and generate code template for reproducing that burst
* measure the infrared carrier frequency / capture ir pulse train (max 200 pulses )
* connect the IR receiver Module (IR_reveiver_schematic.jpg)
* to pin 4,5,6,7
*
*
* KHM 2010 / Martin Nawrath
* Kunsthochschule fuer Medien Koeln
* Academy of Media Arts Cologne
*/
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
//! Macro that clears all Timer/Counter1 interrupt flags.
#define CLEAR_ALL_TIMER1_INT_FLAGS (TIFR1 = TIFR1)
int pinLed = 13; // LED connected to digital pin 13
int pinGND = 4; // Ground for IR reveiver Module
int pinVCC = 5; // +5V for IR reveiver Module
int pinAIN0= 6; // Analog Comparator In 0 / IR reveiver Module
int pinAIN1= 7; // Analog Comparator In 0 / IR reveiver Module
int pinTest = 8;
unsigned int khz;
byte bb;
byte bba;
int cnt;
const int maxlen = 300;
int codelen;
unsigned int timecode[maxlen+5];
void setup()
{
pinMode(pinLed, OUTPUT); // sets the digital pin as output
pinMode(pinTest, OUTPUT);
pinMode(pinGND, OUTPUT);
pinMode(pinVCC, OUTPUT);
pinMode(pinAIN0, INPUT);
pinMode(pinAIN1, INPUT);
digitalWrite(pinVCC,1);
digitalWrite(pinGND,0);
Serial.begin(115200); // connect to the serial port
// hardware counter setup ( refer atmega168.pdf chapter 16-bit counter1)
TCCR1A=0; // reset timer/counter1 control register A
TCCR1B=0; // reset timer/counter1 control register A
TCNT1=0; // counter value = 0
// set timer/counter1 hardware as counter , counts events on pin T1 ( arduino pin 5)
// normal mode, wgm10 .. wgm13 = 0
cbi (TCCR1B ,CS10); // no clock
cbi (TCCR1B ,CS11);
cbi (TCCR1B ,CS12);
// timer2 setup / is used for frequency measurement gatetime generation
// timer 2 presaler set to 256 / timer 2 clock = 16Mhz / 256 = 62500 Hz
cbi (TCCR2B ,CS20);
sbi (TCCR2B ,CS21);
sbi (TCCR2B ,CS22);
//set timer2 to CTC Mode
cbi (TCCR2A ,WGM20);
sbi (TCCR2A ,WGM21);
cbi (TCCR2B ,WGM22);
OCR2A = 124; // CTC at top of OCR2A / timer2 interrupt when coun value reaches OCR2A value
// interrupt control
// sbi (TIMSK2,OCIE2A); // enable Timer2 Interrupt
cbi(ADCSRB,ACME);
cbi(ACSR,ACD);
cbi(ACSR,ACBG);
Serial.println(" Infrared code detector");
while ((ACSR & 32) == 0) {
}
khz=f_measure();
Serial.print(khz);
Serial.print( " KHz");
Serial.println( "");
}
void loop()
{
if (ACSR & 32) { // if IR Signal on pin 5 present
TCCR1B=0; //timer1 off
sbi(TIFR1,TOV1); // clear Timer/Counter 1 overflow flag
TCNT1=0; // clear timer1
TCCR1B=3; //timer1 prescaler =64;
bba=0;
cnt=1;
while ((TIFR1 & 1)==0 ) { // wait for T1 period length 250ms TIFR1 Flag
bb=0;
bb = ACSR & 32; // sample IR Strobe Signal for HIGH/LOW
delayMicroseconds(5);
bb =bb | ACSR & 32;
delayMicroseconds(5);
bb =bb | ACSR & 32;
delayMicroseconds(5);
bb =bb | ACSR & 32;
delayMicroseconds(5);
bb =bb | ACSR & 32;
delayMicroseconds(5);
bb =bb | ACSR & 32;
delayMicroseconds(5);
bb =bb | ACSR & 32;
delayMicroseconds(5);
bb =bb | ACSR & 32;
if (bb != bba) { // if IR strobe level changed
PORTB = PORTB ^ 32; // LED blink
timecode[cnt]=TCNT1; // Store Timecode in Table
codelen=TCNT1;
cnt++; // Count IR Strobes
if (cnt > maxlen) cnt =maxlen-1; // cnt max
delayMicroseconds(200);
}
bba=bb;
}
timecode[cnt]=0;
print_code_template();
for (int ii=1;ii < maxlen;ii++) timecode[ii]=0;
}
}
//******************************************************************
// print a code template according to a pressed button
void print_code_template(){
unsigned int ix,ia,ia1,ia2;
char st1[20];
unsigned long int w1,w2;
Serial.println( "//****************** CODE TEMPLATE FOR IR REMOTE ****************************");
Serial.print( "// IR codelength = ");
Serial.print( codelen*4/1000);
Serial.print( " ms");
Serial.println( "");
Serial.print( "ICR1 = 16000 /") ;
Serial.print(khz);
Serial.println( "; // IR carrier frequency") ;
for (ix=1;ix < maxlen;ix+=2) {
ia=timecode[ix];
ia1=timecode[ix+1];
ia2=timecode[ix+2];
if (ia !=0) {
Serial.print( "sbi(DDRB,1); delayMicroseconds(");
w1=ia1-ia;
w1=w1*4;
sprintf(st1, "%4d );", w1);
Serial.print( st1);
timecode[ix]=0;
}
if (ia2 !=0) {
w2=ia2-ia1;
w2=w2*4;
Serial.print( " cbi(DDRB,1); delayMicroseconds(" );
sprintf(st1, "%4d );", w2);
Serial.print( st1);
timecode[ix]=0;
timecode[ix+1]=0;
Serial.print( " // ");
sprintf(st1, "ix:%3d", ix);
Serial.print( st1);
sprintf(st1, " ton:%4d", w1);
Serial.print( st1);
sprintf(st1, " toff:%4d", w2);
Serial.print( st1);
Serial.println("");
}
}
Serial.print( " cbi(DDRB,1);" );
Serial.println("");
Serial.println("");
Serial.println("");
}
//******************************************************************
// measure infrared carrier frequency at pin 6,7 / analog comparator
unsigned int f_measure() {
TCCR1B=0; //timer1 off
sbi(TIFR1,TOV1); // clear Timer/Counter 1 overflow flag
TCNT1=0; // clear timer1
TCCR1B=3; //timer1 prescaler =64;
int cnt=0;
byte bb,bba;
while (TCNT1 < 250) {
bb=ACSR;
if (bb != bba) {
cnt++;
// PORTB ^= 32;
}
bba=bb;
}
cnt=cnt/2;
return (cnt);
}

View File

@@ -0,0 +1,368 @@
/* 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= 26*60+50; // set here ypur DVD title playtime
void setup() {
pinMode(pinGND,OUTPUT);
Serial.begin(115200);
Serial.println("Panasonic DVD S54 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++;
//Serial.println("second");
f_sec=1;
PORTB ^= 32;
}
if (f_sync==1)
if ( tics % 10 == 0) PORTB ^= 32;
}
/********************************************************************/
void send_stop() {
sbi(DDRB,1); delayMicroseconds(3472); cbi(DDRB,1); delayMicroseconds(1720); // 1
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(436); // 3
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(1292); // 5
sbi(DDRB,1); delayMicroseconds(456); cbi(DDRB,1); delayMicroseconds(420); // 7
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(432); // 9
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(436); // 11
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(412); // 13
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(432); // 15
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(440); // 17
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(420); // 19
sbi(DDRB,1); delayMicroseconds(456); cbi(DDRB,1); delayMicroseconds(420); // 21
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(436); // 23
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(436); // 25
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(412); // 27
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(1316); // 29
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(416); // 31
sbi(DDRB,1); delayMicroseconds(460); cbi(DDRB,1); delayMicroseconds(412); // 33
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(436); // 35
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(412); // 37
sbi(DDRB,1); delayMicroseconds(376); cbi(DDRB,1); delayMicroseconds(24); // 39
sbi(DDRB,1); delayMicroseconds(48); cbi(DDRB,1); delayMicroseconds(432); // 41
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(444); // 43
sbi(DDRB,1); delayMicroseconds(432); cbi(DDRB,1); delayMicroseconds(1292); // 45
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(1308); // 47
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(412); // 49
sbi(DDRB,1); delayMicroseconds(464); cbi(DDRB,1); delayMicroseconds(1284); // 51
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(440); // 53
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(412); // 55
sbi(DDRB,1); delayMicroseconds(464); cbi(DDRB,1); delayMicroseconds(412); // 57
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(432); // 59
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(412); // 61
sbi(DDRB,1); delayMicroseconds(456); cbi(DDRB,1); delayMicroseconds(420); // 63
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(440); // 65
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(420); // 67
sbi(DDRB,1); delayMicroseconds(456); cbi(DDRB,1); delayMicroseconds(412); // 69
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(432); // 71
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(436); // 73
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(412); // 75
sbi(DDRB,1); delayMicroseconds(460); cbi(DDRB,1); delayMicroseconds(416); // 77
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(440); // 79
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(420); // 81
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(432); // 83
sbi(DDRB,1); delayMicroseconds(444); cbi(DDRB,1); delayMicroseconds(436); // 85
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(412); // 87
sbi(DDRB,1); delayMicroseconds(464); cbi(DDRB,1); delayMicroseconds(412); // 89
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(440); // 91
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(1288); // 93
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(1308); // 95
sbi(DDRB,1); delayMicroseconds(440); cbi(DDRB,1); delayMicroseconds(436); // 97
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1); delayMicroseconds(1292); // 99
sbi(DDRB,1); delayMicroseconds(436); cbi(DDRB,1);
}
/********************************************************************/
void send_play() {
sbi(DDRB,1); delayMicroseconds( 3476 ); cbi(DDRB,1); delayMicroseconds( 1732 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 412 );
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 1300 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 432 );
sbi(DDRB,1); delayMicroseconds( 448 ); cbi(DDRB,1); delayMicroseconds( 412 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 432 );
sbi(DDRB,1); delayMicroseconds( 448 ); cbi(DDRB,1); delayMicroseconds( 412 );
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 424 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 444 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 424 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 1296 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 444 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 424 );
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 424 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 1292 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 1312 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 412 );
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 1300 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 424 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 432 );
sbi(DDRB,1); delayMicroseconds( 448 ); cbi(DDRB,1); delayMicroseconds( 432 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 412 );
sbi(DDRB,1); delayMicroseconds( 448 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 420 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 444 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 444 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 412 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 1312 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 420 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 1296 );
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 412 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds( 436 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 448 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 1300 );
sbi(DDRB,1); delayMicroseconds( 436 ); cbi(DDRB,1); delayMicroseconds( 432 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 1292 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 1288 );
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 1292 );
sbi(DDRB,1); delayMicroseconds( 444 ); cbi(DDRB,1); delayMicroseconds( 432 );
sbi(DDRB,1); delayMicroseconds( 448 ); cbi(DDRB,1); delayMicroseconds( 1288 );
sbi(DDRB,1); delayMicroseconds( 432 ); cbi(DDRB,1); delayMicroseconds( 0 );
}
/********************************************************************/
void send_pause() {
ICR1 = 16000 /37; // IR carrier frequency
sbi(DDRB,1); delayMicroseconds(3500 ); cbi(DDRB,1); delayMicroseconds(1708 ); // ix: 1 ton:3500 toff:1708
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 3 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1264 ); // ix: 5 ton: 456 toff:1264
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 7 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 384 ); // ix: 9 ton: 464 toff: 384
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 11 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 13 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 388 ); // ix: 15 ton: 456 toff: 388
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 17 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 19 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 21 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 23 ton: 424 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 25 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 27 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds(1308 ); // ix: 29 ton: 420 toff:1308
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 31 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 33 ton: 424 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 35 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 37 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 388 ); // ix: 39 ton: 460 toff: 388
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 41 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1304 ); // ix: 43 ton: 456 toff:1304
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds(1304 ); // ix: 45 ton: 424 toff:1304
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 47 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1272 ); // ix: 49 ton: 456 toff:1272
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 51 ton: 456 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 53 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 55 ton: 424 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 57 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 59 ton: 456 toff: 424
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 61 ton: 424 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 63 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 65 ton: 456 toff: 424
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 67 ton: 424 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 69 ton: 464 toff:1300
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds(1268 ); // ix: 71 ton: 460 toff:1268
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 73 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 75 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 77 ton: 424 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 79 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 81 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 83 ton: 424 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 85 ton: 460 toff:1300
sbi(DDRB,1); delayMicroseconds( 428 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 87 ton: 428 toff:1300
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 89 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1272 ); // ix: 91 ton: 456 toff:1272
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 93 ton: 456 toff:1300
sbi(DDRB,1); delayMicroseconds( 428 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 95 ton: 428 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 97 ton: 464 toff:1300
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1);
}
/********************************************************************/
void send_rev() {
ICR1 = 16000 /37; // IR carrier frequency
sbi(DDRB,1); delayMicroseconds(3500 ); cbi(DDRB,1); delayMicroseconds(1708 ); // ix: 1 ton:3500 toff:1708
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 3 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1268 ); // ix: 5 ton: 456 toff:1268
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 7 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 9 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 11 ton: 420 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 13 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 15 ton: 456 toff: 424
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 17 ton: 424 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 19 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 21 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 388 ); // ix: 23 ton: 460 toff: 388
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 25 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 27 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 29 ton: 420 toff:1300
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 31 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 384 ); // ix: 33 ton: 464 toff: 384
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 35 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 37 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 39 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 41 ton: 420 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 43 ton: 464 toff:1300
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds(1264 ); // ix: 45 ton: 464 toff:1264
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 47 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1268 ); // ix: 49 ton: 456 toff:1268
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 51 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 53 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 55 ton: 424 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 57 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 59 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 420 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 61 ton: 420 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 63 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 65 ton: 464 toff: 420
sbi(DDRB,1); delayMicroseconds( 428 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 67 ton: 428 toff:1300
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 428 ); // ix: 69 ton: 456 toff: 428
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds( 392 ); // ix: 71 ton: 456 toff: 392
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1304 ); // ix: 73 ton: 456 toff:1304
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 75 ton: 460 toff: 420
sbi(DDRB,1); delayMicroseconds( 428 ); cbi(DDRB,1); delayMicroseconds( 420 ); // ix: 77 ton: 428 toff: 420
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1308 ); // ix: 79 ton: 456 toff:1308
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 384 ); // ix: 81 ton: 460 toff: 384
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds(1304 ); // ix: 83 ton: 460 toff:1304
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 384 ); // ix: 85 ton: 460 toff: 384
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds( 424 ); // ix: 87 ton: 460 toff: 424
sbi(DDRB,1); delayMicroseconds( 460 ); cbi(DDRB,1); delayMicroseconds(1304 ); // ix: 89 ton: 460 toff:1304
sbi(DDRB,1); delayMicroseconds( 424 ); cbi(DDRB,1); delayMicroseconds(1300 ); // ix: 91 ton: 424 toff:1300
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1); delayMicroseconds(1264 ); // ix: 93 ton: 464 toff:1264
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1308 ); // ix: 95 ton: 456 toff:1308
sbi(DDRB,1); delayMicroseconds( 456 ); cbi(DDRB,1); delayMicroseconds(1264 ); // ix: 97 ton: 456 toff:1264
sbi(DDRB,1); delayMicroseconds( 464 ); cbi(DDRB,1);
}

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);
}