49741933o 发表于 2014-7-5 09:46:02

uvvvvw 发表于 2014-7-4 23:50 static/image/common/back.gif
int R_pin = 14; //定义电位器的引脚
int S=0; ///////////////////////////////////////////////////// ...

貌似不对,但感觉对。。。。。我调试了一下,当我推到320的时候(也就是稍左边一点),现象是:前进、后退、前进、再是一直后退。。当我再往右边推的时候会经过,341到682这个区间,然后就会停止了,但是以后再怎么推它都不动了。。

uvvvvw 发表于 2014-7-5 12:29:47

49741933o 发表于 2014-7-5 09:46 static/image/common/back.gif
貌似不对,但感觉对。。。。。我调试了一下,当我推到320的时候(也就是稍左边一点),现象是:前进、后退 ...

你程式里 CASE 的语法好像错了。
另外 CASE 0 及 CASE 2 没有考虑停车。

再试试这个。

int R_pin = 14; //定义电位器的引脚
int S=0; ////////////////////////////////////////////////////////////////////////////
void setup()
{
pinMode(8,OUTPUT);//定义输入、输出接口
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(14,INPUT);
Serial.begin(9600);
}
void qianjin()//前进,
{
   
   digitalWrite(10,300);
   digitalWrite(5,255);
   digitalWrite(7,HIGH);//使直流电机(左)逆时针转
   digitalWrite(6,LOW);
   digitalWrite(8,LOW);//使直流电机(右)顺时针转
   digitalWrite(9,HIGH);
}

void tingzhi()//停止
{
   digitalWrite(6,HIGH);//使直流电机(左)制动
   digitalWrite(7,HIGH);
   digitalWrite(8,HIGH);//使直流电机(右)制动
   digitalWrite(9,HIGH);
}
void houtui()
{
   digitalWrite(10,255);
   digitalWrite(5,255);
   digitalWrite(6,HIGH);//使直流电机(左)逆时针转
   digitalWrite(7,LOW);
   digitalWrite(8,HIGH);//使直流电机(右)顺时针转
   digitalWrite(9,LOW);
}
void loop()
{   int x,val;
   float t;
    val= analogRead(R_pin);
    Serial.println(val);
   if(val< 341)
    { x=0; t=0.0088*(341-val);}
   else
   {
      if(val<682)
       {x=1;}
      else
       {x=2;t=0.0088*(val-682);}
   }
   //Serial.println(x);      //////////////////////////////////
   //Serial.println(S);      //////////////////////////////////
//////////////////////////   
switch(x)
   {
   case 0:
      if (S==0) ///////////////////////////////////////////////
      {      ///////////////////////////////////////////////
         qianjin();delay(t*1000+1000);
         houtui();delay(1000);
         qianjin();delay(1000);
         houtui();delay(t*1000+1000);
         S=1;//////////////////////////////////////////////
      } //////////////////////////////////////////////
       else
      {
         tingzhi();
      }
   break;
   case 1:
       tingzhi();
       S=0;    //////////////////////////////////////////////
   break;
   case 2:
      if (S==0) ///////////////////////////////////////////////
      {      ///////////////////////////////////////////////      
         houtui();delay(t*1000+1000);
         qianjin();delay(1000);
         houtui();delay(1000);
         qianjin();delay(1000);
         S=1;//////////////////////////////////////////////
      } //////////////////////////////////////////////   
      else
      {
         tingzhi();
      }   
      break;
   }
}



我用小车试验过 OK 的。
页: 1 [2]
查看完整版本: 技术问题