2018年3月4日 星期日

Arduino (25) 循跡辨識模組TCRT5000+二輪智能車系統。


智能車專案的第三種系統,辨識黑白線軌道,感應模組就是萬向輪左右那兩根。



循跡辨識模組TCRT5000,上面有一顆LED,觸發才會亮,基本原理是紅外線反射。

安裝位置愈低愈好,我一開始安裝太高反應很遲鈍。




意外的強,還以為這東西會有跟超聲波一樣反應遲鈍的問題。


程式如下:

const int SRight = 2;    
const int SLeft = 3;      
//右、左輪感測器宣告。

const int motorIn1 = 10;
const int motorIn2 = 9;
const int motorIn3 = 8;     
const int motorIn4 = 7;      
char val; 
int SRR;    
int SLL;    
byte byteSensorStatus=0;

void setup() 
{
  pinMode(SLeft, INPUT);
  pinMode(SRight, INPUT);
  pinMode(motorIn1, OUTPUT);
  pinMode(motorIn2, OUTPUT);
  pinMode(motorIn3, OUTPUT);
  pinMode(motorIn4, OUTPUT);  
}


void loop(){
 byteSensorStatus = 0;
  SRR = digitalRead(SRight);
  if(SRR == 1)
     byteSensorStatus = (byteSensorStatus | (0x01 << 1));

  SLL = digitalRead(SLeft);
  if(SLL == 1)
     byteSensorStatus = (byteSensorStatus | 0x01);
   //辨識循跡狀態的公式。

  switch(byteSensorStatus)
  {             
    case 0: 
           motorstop();
            break;
    //0、0(黑、黑,停止)。

    case 1: 
             left();  
            break;
   //1、0(白、黑,左轉)。

    case 2: 
             right(); 
            break;
   //0、1(黑、白,右轉)。

    case 3: 
           forward() ;
            break;
   //1、1(白、白,前進)。

  } 

}

void motorstop()
{
  digitalWrite(motorIn1, LOW);
  digitalWrite(motorIn2, LOW);
  digitalWrite(motorIn3, LOW);
  digitalWrite(motorIn4, LOW);
}

void forward()
{
  digitalWrite(motorIn1, HIGH);
  digitalWrite(motorIn2, LOW);
  digitalWrite(motorIn3, HIGH);
  digitalWrite(motorIn4, LOW);
}

void backward()
{
  digitalWrite(motorIn1, LOW);
  digitalWrite(motorIn2, HIGH);
  digitalWrite(motorIn3, LOW);
  digitalWrite(motorIn4, HIGH);

}

void right()
{
  digitalWrite(motorIn1, LOW);
  digitalWrite(motorIn2, LOW);
  digitalWrite(motorIn3, HIGH);
  digitalWrite(motorIn4, LOW);

}

void left()
{
  digitalWrite(motorIn1, HIGH);
  digitalWrite(motorIn2, LOW);
  digitalWrite(motorIn3, LOW);
  digitalWrite(motorIn4, LOW);
}





4 則留言:


  1. 。。
    。。。
    。。。。
    。。。。。
    。。。。。。
    。。。。。。。
    。。。。。。。。
    。。。。。。。。。

    回覆刪除

  2. 。。
    。。。
    。。。。
    。。。。。

    回覆刪除

8051 (6) 紅外線避障模組控制LED七段顯示器。

這篇要做的Project就是感測器測到訊號時,LED七段顯示器會開始計算偵測次數, 到第5次時會讓紅色LED燈發光。 程式如下: #include <reg52.h> unsigned char seg[5]={0xf9,...