閲覧総計:33702  (本日:2  昨日:1)


ライントレースカー(基本機能のみ搭載)

光センサを2ケ取り付けた自動車が黒いラインに沿って走る
ライントレースカーを製作しました。

フォトリフレクタ GP2S05 秋月 @30円
モータドラバIC 東芝TA7291P 千石 @170円

最初は、基本機能だけのプログラムで走らせてみました。
【結果】カーブの際、ラインセンサ2ケ共が黒ラインからはずれ、
車がラインから外れてしまいました。改良が必要です。
06/11/03

/** 
* ラインに沿って走る車V1 
* 
* PIC 16F628A 
* 発信器:内臓4MHz 
* 電源:乾電池4本(6.0V) 
* ライトセンサー:RA0, RA1 
* モーター:左 RB6,RB7 右 RB0,RB1 
* 
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON 
*    _WDT_OFF _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT 
* 
* プログラム言語:MikroC v6.0 
*/ 
void main() { //メインプログラム 

 //マイコンの初期化 
 PORTA = 0b00000000; //PORTAの中身をきれいにする 
 PORTB = 0b00000000; //PORTBの中身をきれいにする 

 CMCON = 0b00000111; //PORTAをデジタル入出力使用に設定 

 TRISA = 0b00000011; //PORTAをRA0,1を1:入力に、他は0:出力に設定 
 TRISB = 0b00000000; //PORTBを8つ全て出力に設定 
 //マイコンの初期化終わり 

 do{ //doとwhileの間を繰り返す 
  if(PORTA.F1 == 1) { //左センサー黒 
   if(PORTA.F0 == 1) { //右センサー黒 
    //車がラインの上にある 
    //左右モーター前進 
    PORTB.F6 = 1; //左モーター前進 
    PORTB.F7 = 0; 
    PORTB.F0 = 1; //右モーター前進 
    PORTB.F1 = 0; 
   } else { //右センサ白 
    //右にコースアウト 
    //左モーター停止、右モーター前進で 
    //コースにもどる 
    PORTB.F6 = 0; //左モーター停止 
    PORTB.F7 = 0; 
    PORTB.F0 = 1; //右モーター前進 
    PORTB.F1 = 0; 
   } 
  } else { //左センサー白 
   if(PORTA.F0 == 1) { //右センサー黒 
    //左にコースアウト 
    //左モーター前進、右モーター停止で 
    //コースにもどる 
    PORTB.F6 = 1; //左モーター前進 
    PORTB.F7 = 0; 
    PORTB.F0 = 0; //右モーター停止 
    PORTB.F1 = 0; 
   } else { //右センサー白 
    //左右センサー共に白、完全コースアウト 
    //左モーター前進、右モーター停止で 
    //右回りするようにした 
    PORTB.F6 = 1; //左モーター前進 
    PORTB.F7 = 0; 
    PORTB.F0 = 0; //右モーター停止 
    PORTB.F1 = 0; 
   } 
  } 

  PORTB.F5 = PORTA.F1; //左センサー状況LED表示 
  PORTB.F2 = PORTA.F0; //右センサー状況LED表示 

 } while(1); //doとwhileの間を繰り返す 
} //メインプログラム終わり