■ 考え方
スロットル方向と同じ考え方で大丈夫です。
set_adc_channel(1);
delay_us(20);
al_adc=read_adc();
エルロン方向はchanner(1)により読み出します。結果はal_adcに入ります。
ir_mod(al_adc);
ir_mod()関数により送信します。
以上でスロットル・エルロンの送信可能な2ch送信機が完成します。
// 赤外線2ch送信機
//課題11 スロットル・エルロンの赤外線送信する
// ex11_tx006p.c PIC12F683用
#include<12f683.h>
#DEVICE ADC=10 //A-Dコンバータを10bitで使用
//10bit=2^10=0~1023
#fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOMCLR
//ウオッチドック・タイマなし、パワーアップ・タイマ使用
//プロテクトなし、MCLRなし
#use delay(CLOCK=8000000) //8MHz駆動
#byte GP=5//GPポート使用
#bit IROUT=GP.5//赤外線LED
#bit LED=GP.4//LED
#bit SW=GP.3//ジョイスティック付属スイッチ
// A-Dコンバータ割り当て
//ch0:スロットル
//ch1:エルロン
//ch2:10kΩ半固定抵抗
#define ON 1
#define OFF 0
#define HI 1
#define LOW 0
long th_adc,al_adc,vdd_adc;
int led_sts;
// 38kHz変調出力関数
// 13μs On、13μs OFFを19回繰り返して500μsのONを作る
// その後、VRのA-Dコンバータの値により、OFFタイム設定する。
//0・・1.000ms、512・・1.522ms、1024・・2.035ms
void ir_mod(long pulse){
int dummy;
long i;
disable_interrupts(INT_TIMER1);//割り込み禁止
for( (その1) ){//38kHz変調になるように調整済み
(その2) ;
delay_us(13);
(その3) ;
delay_us(6);
}
IROUT=OFF;
delay_us(325);
pulse=pulse/10;
for(i=0;i<pulse;i++){//1ループ10μsに調整済み
dummy=ON;
delay_us(2);
}
enable_interrupts(INT_TIMER1);//割り込み許可
}
//VR入力をA-Dコンバータより読み出し、各変数にセットする。
void adc_in(void)
{
set_adc_channel(0);
delay_us(20);
(その4) ;
set_adc_channel(1);
delay_us(20);
(その5) ;
set_adc_channel(2);
delay_us(20);
vdd_adc=read_adc();
}
//メイン・ルーチン
void main()
{
int i;
set_tris_a(0x0f);//GP0~GP4入力、GP5出力
setup_adc_ports(sAN0 | sAN1 | sAN2 | VSS_VDD); //A-Dコンバータ使用宣言
setup_adc(ADC_CLOCK_DIV_32); //A-Dコンバータのクロック
setup_oscillator(OSC_8MHz);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);//250msごとの割り込み
set_timer1(3036);//timer1初期値
IROUT=OFF;
LED=OFF;
led_sts=0;
for(i=0;i<3;i++){
LED=ON;
delay_ms(250);
LED=OFF;
delay_ms(250);
}
LED=ON;
while(1){
adc_in();
//1chエルロン
ir_mod( (その6) );
//2chエレベータ(なし)
ir_mod(512);
//3chスロットル
ir_mod( (その7) );
//4chラダー(なし)
ir_mod(512);
//チャンネル・エンド
ir_mod(512);
delay_ms(10);//送信間隔
}
}
■正解
(その1) i=0;i<19;i++ (その2)IROUT=ON (その3) IROUT=OFF
(その4) th_adc=read_adc()
(その5)al_adc=read_adc() (その6) al_adc (その7) th_adc
・課題11のC言語ソース・ファイルとHEXファイルはこちらからダウンロードできます【ex11_006p.lzh />】
次回は、電源電圧監視プログラムを実装し、完成します。
長野県飯田工業高校 竹内浩一

PICマイコンでつくるインドア・プレーン
みんなで作ろうインドア・プレーン