圏9研究所 工作室

圏9研究所の開発情報資料など

PIC16F シーリングライト用赤外線リモコン その3

8.補足メモ
1)PIC16Fリソース設定
・ 赤外LEDの電流が大きいため電池電圧が低下してもある程度動作するよう BOREN disableに変更する
・SW入力ピンは内部プルアップに設定するため ON=‘L’
・クロック周波数についてSWサンプリング処理毎にSLEEPするので周波数を下げても電池寿命は大差なし
・さらに消費電力を下げたい場合はWDTを使わずMCCでEXT_INTを追加しSW入力を割り当てて外部割込からSLEEPを解除する

2)回路
・RN5006の代用は下記 ただし赤外LEDの駆動電流が低下する場合あり
 秋月 [I-14775] Nch MOSFET INKA114AS1-T112
 秋月 [I-16072] ロードスイッチ(半導体スイッチ) TCK107AF (5個入)
 DTD113 ROHM

3)参考 メインコード

while (1)
{
	check_sw(mode_sw); // read SW0B
	// send IR power:SW0B DOWN 0x75,0x12,0x01,0xAF,0x01,0xFE
	if (mode_sw[0] == SW_DOWN) {
		send_ir(0x01); // Send IR Code
	}
	// send IR small:SW0B LONG @0x75,0x12,0x01,0xAF,0x02,0xFD
	if (mode_sw[0] == SW_LONG) {
		send_ir(0x02); // Send IR Code
	}
	CLRWDT();
	WDTCONbits.SWDTEN = 1; // enable WDT
	SLEEP(); // sleep 33.03ms
	NOP();
	WDTCONbits.SWDTEN = 0; // disenable WDT
}

【参考】SLEEPの使い方、おまじないコード NOP() の意味など

https://www.cqpub.co.jp/hanbai/books/37/37391/37391_7syo.pdf

おわり