自宅内には、多数のAV機器があります。
しかし、リモコン操作を行うときに、次のような問題が時々発生します。
そのためにリモコンが効かず、操作する人間側が、少し移動しなければなりません。
そこで、リモコンが送信する赤外線を、途中で中継(リピータ)することにより、これらの問題を緩和させることにしました。
全体は、次の3つのブロック(モジュールまたは部品)で構成されます。
※赤外線リモコン受信モジュールについては、前回作成した、“赤外線データ通信(USART)“を参照してください。
<処理の流れ>
//********************************************************************** /* 「赤外線リモコンリピータ」 */ //********************************************************************** #define LED GPIO.F1 //********************************************************************** void Pwm_Change_DutyEx(unsigned int duty_ratio) { CCPR1L = duty_ratio >> 2; CCP1CON.DC1B0 = duty_ratio & 0b00000001; CCP1CON.DC1B1 = (duty_ratio & 0b00000010) >> 1; } //********************************************************************** void main() { OSCCON = 0b01110000; // クロックを8Mhzに設定する。 CMCON0 = 0b00000111; // コンパレータは使用しない。 ANSEL = 0b00000000; // A/D変換は使用しない。 TRISIO = 0b00001001; // Pwm_Init(38000); // 38kHz duty=50% Pwm_Change_DutyEx((PR2 * 4) / 2); Pwm_Stop(); // while (1) { //赤外線リモコン受信モジュールの出力信号の立下りをチェックする。 while (GPIO.F3 == 1) ; //38kHzのキャリアを出力する。 Pwm_Start(); LED = 1; //赤外線リモコン受信モジュールの出力信号の立ち上がりをチェックする。 while (GPIO.F3 == 0) ; //38kHzのキャリアを停止する。 Pwm_Stop(); LED = 0; } } //**********************************************************************