38 kHzの発振をArduinoで行う場合のスケッチです。
// This is the IR-remote controller for Arduino //
// Power on/off Leader+1010100010110011111 for Sony DPF-V700
// Leader 2.4(high)+0.6(low)=3.0 msec
// 1: 1.2(high)+0.6(low)=1.8 msec、
// 0: 0.6(high)+0.6(low)=1.2 msec
unsigned int T1=600; // Low time or High time of Zero
unsigned int T2=1200; // High time of One
unsigned int T4=2400; //High time of Leader
unsigned int T18=10800; // Low time of the bottom line
unsigned int Tdelay=13; // 38kHz
unsigned int T1Repeat=22; // 22 waves in 0.6 msec
unsigned int T2Repeat=45; // 45 waves in 1.2 msec
unsigned int T4Repeat=90; // 90 waves in 2.4 msec
unsigned long Time=0;
void setup(){
pinMode(2, OUTPUT); //No 2 pin =output
}
void Leader(){
for (int i=0; i<T4Repeat; i++){ //38kHz frequency 90 waves
PORTD=B00000100;
delayMicroseconds(Tdelay); //on for Tdelay
PORTD=B00000000;
delayMicroseconds(Tdelay); //off for Tdelay
}
digitalWrite(2, LOW); //
delayMicroseconds(T1); //off for T1
}
void One(){
for (int i=0; i<T2Repeat; i++){ //38kHz frequency 45 waves
PORTD=B00000100;
delayMicroseconds(Tdelay); //on for Tdelay
PORTD=B00000000;
delayMicroseconds(Tdelay); //off for Tdelay
}
digitalWrite(2, LOW);
delayMicroseconds(T1); //off for T1
}
void Zero(){
for (int i=0; i<T1Repeat; i++){
PORTD=B00000100;
delayMicroseconds(Tdelay); //on for Tdelay
PORTD=B00000000;
delayMicroseconds(Tdelay); //off for Tdelay
}
digitalWrite(2, LOW);
delayMicroseconds(T1); //off for T1
}
void SignalOnOff(){ //send Leader+10101000101100111111
Leader();
One();
Zero();
One();
Zero();
One();
Zero();
Zero();
Zero();
One();
Zero();
One();
One();
Zero();
Zero();
One();
One();
One();
One();
One();
One();
delayMicroseconds(T18); //off for 10800 usec
}
void loop(){ //main program
// send Leader+ 10101000101100111111 for three times
SignalOnOff();
SignalOnOff();
SignalOnOff();
delay(30000); //wait 30 sec
}
ここで公開するアイデア/装置は安全性を保障しておりません。 用途に応じた設計を行い、十分な安全検査を行ってからご利用ください。 本サイトの情報の営利目的での利用はご遠慮ください。 本サイトの内容の無断転載を禁じます。© 2010 TYK