欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 用三個巡線模塊做的巡線小車電機驅動的ARDUINO程序 [打印本頁]

作者: 風雨無阻666    時間: 2017-12-5 14:44
標題: 用三個巡線模塊做的巡線小車電機驅動的ARDUINO程序

void motor(char pin,char pwmpin,char state,int val)
{
    pinMode(pin, OUTPUT);   
  
  if(state==1)
  {  
    analogWrite(pwmpin,val);
    digitalWrite(pin,1);
   }
  else if(state==2)
{  
   analogWrite(pwmpin,val);
   digitalWrite(pin,0);
}
else if(state==0)
{
    analogWrite(pwmpin,0);
    digitalWrite(pin,0);
}
}
  
void runfoward(int i)   //前進
{
  motor(4,5,1,i);
  motor(7,6,1,i);
}
void runback(int j)    //后退
{
   motor(4,5,2,j);
   motor(7,6,2,j);
}
void turnL(int m)     //左轉
{
  motor(4,5,1,m);
  motor(7,6,0,m);
}
void turnR(int n)      //右轉
{
  motor(4,5,0,n);
  motor(7,6,1,n);
}
void stop()            //停止
{
  motor(4,5,0,0);
  motor(7,6,1,0);
}
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  char num1,num2,num3;
   num1=digitalRead(11);   
  num2=digitalRead(12);
  num3=digitalRead(2);  
   if((num1==0)&&num2&&num3)
   {
    turnL(180);     //檢測到左邊傳感器遇到黑線,說明小車右偏了,立即往左轉一點
    delay(2);
    while(1){
    num2=digitalRead(12);       //循環判斷中間傳感器度數,
    if(num2==1)
    {  turnL(180);        //如果num2==1說明還沒有轉到中間位置,繼續左轉
     delay(2);}
     else
     break;   //檢測到num2==0說明轉過頭了,跳出循環,檢測三個傳感器的狀態再做出相應動作
   }      //后面道理相同
   }   
      else if(num2&&num1&&(num3==0))
   {
    turnR(180);
    delay(2);
    while(1)
    {
     num2=digitalRead(12);
    if(num2==1){
      turnR(180);   
     delay(2);}
     else
      break;
    }
   }
  else
  {
    runfoward(250);
    delay(2);
  }
}


作者: 1335542    時間: 2017-12-5 15:03
很有幫助




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1