Quantcast
Channel: 楽天 みんなで解決!Q&A 新着質問([技術者向] コンピューター/205)
Viewing all articles
Browse latest Browse all 29232

h8/36064Gマイコンでライントレース

$
0
0
h8/36064Gマイコンを使ってライントレースのプログラムを作りましたが上手く動きません。 独学なのでどこが悪いのかわからないので教えて頂けると幸いです。 C言語を使っています。 #include "h8_tiny.h" int main(void){ unsigned short senR ;//右センサー unsigned short senL ;//左センサー PCR6.BYTE = 0x30;//LED1,2の出力設定 PDR6.BYTE = 0xFD;//PWM以外を1。LED消灯 while(1){ PCR3.BYTE=0xff;// モータドライバIN1,IN2へ信号出力設定(P3をすべて出力) AD.ADCSR.BIT.SCAN = 1 ;//複数チャンネルを使用スキャンモード AD.ADCSR.BIT.CH = 1 ;//AN0とAN1を使用 AD.ADCSR.BIT.ADST = 1 ;//A/D変換開始 while(AD.ADCSR.BIT.ADF == 0);//A/D変換終了を待つ senR = AD.ADDRA ; senR = senR >> 6 ; senL = AD.ADDRB ; senL = senL >> 6 ; PCR6.BIT.B0=1;// モータドライバPWMピンへ信号出力設定 //(P6の0を出力設定) PDR6.BIT.B0=1;// モータドライバPWMピンへHigh設定(モータ回転) //(P6の0をHigh設定) PCR6.BIT.B1=1;// モータドライバPWMピンへ信号出力設定 //(P6の1を出力設定) PDR6.BIT.B1=1;// モータドライバPWMピンへHigh設定(モータ回転) //(P6の1をHigh設定) if(senR > 900){//LED1点灯 PDR6.BIT.B4 = 1 ; PDR6.BIT.B5 = 0 ; PDR3.BYTE=0x01;// 右折 }else if(senL < 900){//LED2点灯 PDR6.BIT.B4 = 0 ; PDR6.BIT.B5 = 1 ; PDR3.BYTE=0x08;// 左折 }else if(senR > 1000 && senL > 1000){//ストップ PDR6.BIT.B4 = 1 ; PDR6.BIT.B5 = 1 ; }else{ PDR6.BIT.B4 = 0 ; //LED点灯 PDR6.BIT.B5 = 0 ; PDR3.BYTE=0x09;// 左右タイヤ 正回転 } AD.ADCSR.BIT.ADF = 0 ;//A/D変換終了フラグクリア } return 0; } アドヴァイス宜しくお願いいたします。

Viewing all articles
Browse latest Browse all 29232

Trending Articles