TV(TOSHIBA REGZA)のon/offを送信するスケッチです。

// This is an IR-remote signal sender for REGZA //
// Power on/off  Leader+00000010 11111101 01001000 10110111+Stop
// Leader 9.0(high)+4.5(low)=13.5 msec
// 1: 0.56(high)+1.69(low)=2.25 msec、
// 0: 0.56(high)+0.56(low)=1.12 msec
// Terminator: 0.56(high)+40.2(low)+9.0(high)+2.25(low)=52 msec

boolean IRsend=LOW; //変数IRsendをboolean(HIGHかLOWの二値)で与える。

unsigned int Repeat;

unsigned int T1=560;
unsigned int RepeatLeader=341; // 341 waves in 9 msec 
unsigned int TL2=4500;

unsigned int RepeatHigh=21; // 21 waves in 0.56 msec
unsigned int T2=1690;

unsigned int TS1=40200;
unsigned int TS2=2250;
unsigned int Tdelay=13;  // 38kHz 

void setup(){
  pinMode(2, OUTPUT); //2番ピンをINPUT(入力)に指定。
  Serial.begin(9600);
}

void SendHigh(){   // On/Off at 38 kHz for Repeat times
 for (int i=0; i< Repeat; i++){ 
       PORTD=B00000100;
      delayMicroseconds(Tdelay);  //on for Tdelay
        PORTD=B00000000;
      delayMicroseconds(Tdelay);  //off for Tdelay
      }    
}

void Leader(){ 
    Repeat=RepeatLeader;
    SendHigh();  
    PORTD=B00000000;    // off状態とする。
    delayMicroseconds(TL2);  // 4.5 msec offのまま。
}

void One(){ 
     Repeat=RepeatHigh; 
     SendHigh();  
     PORTD=B00000000;     // LEDpin8に0Vを出力。off状態とする
     delayMicroseconds(T2);            // 1.69 msec offのまま。
}

void Zero(){ 
     Repeat=RepeatHigh;
       SendHigh();  
     PORTD=B00000000;     // LEDpin8に0Vを出力。off状態とする
     delayMicroseconds(T1);   // 0.56 msec offのまま。
}

void Stop(){ 
    Repeat=RepeatHigh;
      SendHigh(); 
      PORTD=B00000000;   // LEDpin8に0Vを出力。off状態とする。
     delayMicroseconds(TS1);  // 40.2 msec offのまま。
    Repeat=RepeatLeader;
      SendHigh(); 
      for (int i=0; i< RepeatHigh; i++){ 
       PORTD=B00000100; 
     delayMicroseconds(TS2);  // 2.25 msec offのまま。
      }   
}

void SignalOnOff(){
    //  Time=micros();
  Leader();
  //    Time=micros()-Time;
     Zero(); Zero(); Zero(); Zero(); Zero(); Zero();  One(); Zero(); //custom code
      One();  One();  One();  One();  One();  One(); Zero();  One(); //Inverse of custom code
     Zero();  One(); Zero(); Zero();  One(); Zero(); Zero(); Zero(); // data code
      One(); Zero();  One();  One(); Zero();  One();  One();  One();// inverse data code
  Stop();
}

void loop(){
  SignalOnOff();
   delay(29000);  //29 sec wait
   Serial.print("Send OK");
   delay(1000); //1 sec wait
}

戸田よろず研究所トップページへ

ここで公開するアイデア/装置は安全性を保障しておりません。 用途に応じた設計を行い、十分な安全検査を行ってからご利用ください。 本サイトの情報の営利目的での利用はご遠慮ください。 本サイトの内容の無断転載を禁じます。© 2010 TYK