公開: 2013/06/10
TVリモコンの送信プログラム
今回の内容
Japaninoを使って、TVリモコンの命令を赤外線で送信することでTVを動かします。そのための送信回路および送信プログラムを製作していきます。
前回と次回の内容
前回までで、Japaninoの環境構築やTVリモコンのフォーマットの説明、TVリモコンの受信プログラムを作成してきました。
JananinoでTVリモコンを作成する記事については今回で最後なので、次回はありません。
[追記] JapaninoでTVリモコンを作成するための記事をまとめましたので、ぜひご覧ください。
Japaninoでリモコン作成
送信用プログラム
作成したTVリモコン信号送信プログラムは以下の通りです。
#define WRITE_PIN 2
int data[] = { //ここに受信した信号を記述
0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1
};
int dataSize;
int onTime = 480;
int offTime = 380;
int highTime = 17;
int lowTime = 8;
void setup()
{
dataSize = sizeof(data) / sizeof(data[0]);
pinMode(WRITE_PIN, OUTPUT);
Serial.begin(9600); // パソコン(ArduinoIDE)とシリアル通信の準備を行う
Serial.print("dataSize : ");
Serial.println(dataSize);
}
void loop()
{
Serial.print("sending data ...");
sendData();
Serial.println("finished sending data");
delay(3000); //3秒おきに送信
}
void sendData(){
for(int k=0; k<5; k++){
//リーダ部 (38kHz変調 : 26us)
for(int j=0; j < 3480/26; j++){
digitalWrite(WRITE_PIN,HIGH);
delayMicroseconds(highTime); //9[us]
digitalWrite(WRITE_PIN,LOW);
delayMicroseconds(lowTime); //17[us]
}
delayMicroseconds(1700); //1700[us]
//データ部 (38kHz変調 : 26us)
for(int i=0; i < dataSize; i++){
for(int j=0; j < onTime/26; j++){ //38kHz変調 : 26us
digitalWrite(WRITE_PIN,HIGH); //点灯
delayMicroseconds(highTime); //9[us]
digitalWrite(WRITE_PIN,LOW); //消灯
delayMicroseconds(lowTime); //17[us]
}
if(data[i] == 0){ //0なら off : 380[us]
delayMicroseconds(offTime);
Serial.print(" 0");
}
else{ //1なら off : 1140[us]
delayMicroseconds(offTime*3);
Serial.print(" 1");
}
}
//trailer部 (38kHz変調 : 26us)
for(int j=0; j < onTime/26; j++){
digitalWrite(WRITE_PIN,HIGH);
delayMicroseconds(highTime); //9[us]
digitalWrite(WRITE_PIN,LOW);
delayMicroseconds(lowTime); //17[us]
}
delay(10); //8ms以上のフレームスペース
}
}
3行目(int data[]={…})の{}内に前回の受信プログラムにより受信したデータをコピーし、Japaninoへ書き込み、実行します。この作業により受信した信号を送信することができます。受信したリモコンデータを配列で保持して、japaninoのポートにスイッチをいくつか繋げて、スイッチごとにリモコンデータを割りふっておけば、Japaninoがリモコンになりますね!!
最後まで読んでいただきありがとうございました。
| << 受信用プログラムへ | 工作topへ |
