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