int R_pin = 14; //定义电位器的引脚
int S=0; ///////////////////////////////////////////////////// ...
貌似不对,但感觉对。。。。。我调试了一下,当我推到320的时候(也就是稍左边一点),现象是:前进、后退、前进、再是一直后退。。当我再往右边推的时候会经过,341到682这个区间,然后就会停止了,但是以后再怎么推它都不动了。。 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]