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