1.回路図
・作成した回路はセンサ部のみ。
・フォトセンサは3つ使用し、それぞれを17.5mm間隔で1列に並べた。
1つのセンサの回路図を以下に示す。他の2つも同様である。
<プログラムリスト>
#device pic16f84a
#include <16f84a.h>
#use delay(clock=20000000)
#fuses nowdt,hs
#byte ra=5
#byte rb=6
char data0,data1,data2;
//初期設定
port_ini(){
set_tris_a(0xff);//Aポートを入力ポートに設定
set_tris_b(0x00);//Bポートを入力ポートに設定
ra=0;
rb=0;
data0=0;
data1=0;
data2=0;
}
void main(){
port_ini();
while(1){
data0=ra;//フォトセンサのデータ読み込み
if(data0==0x14)rb=0x90;//中央のセンサが黒なら前線
if(data0==0x0c)rb=0x10;//右のセンサが黒なら右旋回
if(data0==0x18)rb=0x80;//左のセンサが黒なら左旋回
data0=ra;
if(data0==0x00){//全てのセンサが黒なら
rb=0x90;//前線
delay_ms(1000);//1秒間待つ
rb=0x80;//左旋回
delay_ms(500);//0.5秒待つ
}
if(data0==0x10){//左と中央のセンサが同時に黒なら左旋回
rb=0x80;
}
if(data0==0x04){//右と中央のセンサが同時に黒なら右旋回
rb=0x10;
}
}
}
工学実験
ライントレースロボットのマイコン制御
回路図
・作成した回路はセンサ部のみ。
・フォトセンサは3つ使用し、それぞれを17.5mm間隔で1列に並べた。
1つのセンサの回路図を以下に示す。他の2つも同様である。
図1 センサ部回路図
プログラム
<アルゴリズム>
・以下にコース状態に合わせたロボットの動きを示す。また、コースは左周りとした。
図2 直線の場合 図3 曲がり角の場合
図4 十字路(コース左回りの場合のみ)
図5 山なりの場合
・以下に簡単なフローチャートを示す。
図6 アルゴリズム
<プログラムリスト>
#device pic16f84a
#includ...