(修整版)結構苦労する送信部分+受信部分 4チャンネル - インドアプレーン

Posted by kyosuke at 04/16 2008
>>前の記事: (バグあり)結構苦労する送信部分+受信部分 4チャンネル



(バグあり)結構苦労する送信部分+受信部分 4チャンネル
http://toolible.net/monozukuri/articles/55

の修整版です。

やはり、それゆえに、
と言いますか、

前回のプログラムですが、
DSO-2090 USBオシロスコープ!で調べた結果、
38kHzでは発信されていませんでした。

38kHzで17回信号を出そうとしたプログラム

for(cnt=0;cnt<18;cnt++){
	GPIO0 = 1;
	DelayUs(13);
	GPIO0 = 0;
	DelayUs(13);
}
38kHzは、26us周期くらいだから、
13usオン、13usオフにして17回繰り返せ
というプログラムですが、

実際には、そうなりません。
このプログラムでは、
オンが少し長く、オフが2倍くらい長くなります。

まぁ、いろいろありますが、
内部クロックが4MHz程度しかないので、
それによって無駄な時間が多く発生して、
あーだこーだ。


とにかく、4MHzの内部クロックを使用する場合で、
38kHzの発信に一番近いコードは下記になりました。
cnt=0;
while(cnt<18){
	GPIO0 = 1;
	cnt++;
	DelayUs(10);
	GPIO0 = 0;
}
プログラム修整後の発信の様子
Ir_out




修整後の送信プログラム

#include <pic.h>
#include "delay.h"
__CONFIG(0xFF94);

main(void){
	short cnt=0;
	TRISIO = 0xFE;
	CMCON = 0x07;
	GPIO0=0; /* IR OFF */
	while(1){
		cnt=0;
		if(GPIO2 == 1){
			while(cnt<18){
				GPIO0 = 1;
				cnt++;
				DelayUs(10);
				GPIO0 = 0;
			}
		}else if(GPIO3 == 1){
			while(cnt<37){
				GPIO0 = 1;
				cnt++;
				DelayUs(10);
				GPIO0 = 0;
			}
		}else if(GPIO4 == 1){
			while(cnt<56){
				GPIO0 = 1;
				cnt++;
				DelayUs(10);
				GPIO0 = 0;
			}
		}else if(GPIO5 == 1){
			while(cnt<76){
				GPIO0 = 1;
				cnt++;
				DelayUs(10);
				GPIO0 = 0;
			}
		}else{
			GPIO0=0;
		}
		DelayMs(250);
	}
}



修整後の受信プログラム
#include <pic.h>
#include "delay.h"
__CONFIG(0xFF94);

main(void){
	short cnt=0;
	TRISIO = 0x08;
	CMCON = 0x07;
	GPIO0=0; /* LED1 ON */
	GPIO1=0; /* LED2 ON */
	GPIO2=0; /* LED3 ON */
	GPIO4=0; /* LED4 ON */
	while(1){
		if(GPIO3 == 0){
			DelayUs(100);
			cnt = cnt+1;
		}else{
			if(cnt < 4){
			}else if(cnt >= 4 && cnt <= 5){
				GPIO0=1;
				DelayMs(100);
				GPIO0=0;
			}else if(cnt >= 9 && cnt <= 11){
				GPIO1=1;
				DelayMs(100);
				GPIO1=0;
			}else if(cnt >= 15 && cnt <= 17){
				GPIO2=1;
				DelayMs(100);
				GPIO2=0;
			}else if(cnt >= 20 && cnt <= 23){
				GPIO4=1;
				DelayMs(100);
				GPIO4=0;
			}
			cnt = 0;
		}
	}
}


>>前の記事: (バグあり)結構苦労する送信部分+受信部分 4チャンネル





インドアプレーンのモノ作り記事

Ir_out_thumb
(修整版)結構苦労する送信部分+受信部分 4チャンネル
現在のページです
Posted by kyosuke at 04/16 2008

Ir2_thumb
(バグあり)結構苦労する送信部分+受信部分 4チャンネル
赤外線通信の送信部のプログラム1&lt;br /&gt; http://toolible.net/monozukuri/articles/49&lt;br /&gt; &lt;br /&gt; ...
続きを読む>>(バグあり)結構苦労する送信部分+受信部分 4チャンネル
Posted by kyosuke at 04/03 2008

Ir2_thumb
赤外線通信の送信部のプログラム1
前回は、テレビのリモコンを使って&lt;br /&gt; 赤外線の受信テストを行ってみました。&lt;br /&gt; http://toolible.net/monozukuri/article...
続きを読む>>赤外線通信の送信部のプログラム1
Posted by kyosuke at 03/27 2008

Ir_thumb
インドアプレーンを作りたくなった
とりあえずテレビのリモコンで、 赤外線の受信を試してみるー。 (受信側だけ部品を組んでみる) 部品 以前アキバで買っといた赤外線受光素子 PL-IRM0101(おそらくこれ 200...
続きを読む>>インドアプレーンを作りたくなった
Posted by kyosuke at 03/25 2008