本帖最后由 血阳 于 2015-4-24 13:10 编辑
刚买来小车配件,然后从昨天晚上九点一直弄这个到现在,还没弄成功,出现了问题,不知道是什么情况,求求大腿求大腿帮忙解答T T.(PS.还发现大半夜的论坛竟然无法打开,服务器负载过大什么的。)
我现在想实现的就是很简单的功能:
小车前进2s;停1s;
小车到退2s;停1s;
小车左转2s;停1s;
小车右转2s;停1s;
我写好程序以后,
第一步:把程序下载到arduino的板子里;
第二步:把电机模块和主板结合好;
第三步:上电。
结果,问题就来了。小车并没有按照我的要求来走,而是出现了运动混乱问题。
于是我分别单独测每个动作(分次去掉前进,后退,左转,右转),现象我都记录在这了:
1、前进:左右均不动。 正确现象:左右前进
2、后退:右进左不动。 正确现象:左右后退
3、左转:左右均不动。 正确现象:右进左不动
4、右转:左进右不动。 正确现象:左进右不动
而且,电机似乎不灵敏,有时候不会动T T。需要重置才动,神马情况啊·····
昨晚大半夜的,调的我都崩溃了,现在来这里,求大腿拯救啊T T...
我真的不知道是硬件连接错误了,还是程序写错了····好伤心,大半夜的,睡不着T T...
我的程序和连线图附在这里,有什么问题,求指导啊 T T.
程序: #define _speedLeftPin 5          
#define _speedRightPin 4      //定义引脚4,5控制左轮
#define _dirLeftPin 6
#define _dirRightPin 7        //定义引脚6,7控制右轮
void forward(int _speed);
void back(int _speed);
void turnLeft(int _speed);
void turnRight(int _speed);
void _stop(); //声明前进,后退,左转,右转,停止函数
void setup()
{
  pinMode(_speedLeftPin,OUTPUT);
  pinMode(_speedRightPin,OUTPUT);
  pinMode(_dirLeftPin,OUTPUT);
  pinMode(_dirRightPin,OUTPUT);
}
void loop()
{
    forward(250);
    delay(2000);
    _stop();
    delay(1000); //控制履带车前进2s;停1s;
    
    back(250);
    delay(2000);
    _stop();
    delay(1000); //小车到退2s;停1s;
    
    turnLeft(250);
    delay(2000);
    _stop();
    delay(1000); //小车左转2s;停1s;
    
    turnRight(250);
    delay(2000);
    _stop();
    delay(1000); //小车右转2s;停1s;
}
/**************************************************
forward子函数——前进子函数
函数功能:控制履带车前进
入口参数:_speed—前进速度范围:0~255
**************************************************/
void forward(int _speed)
{
          digitalWrite(_dirLeftPin,HIGH); //引脚输出高电平,左轮前进
          digitalWrite(_dirRightPin,HIGH); //引脚输出高电平,右轮前进
          analogWrite(_speedLeftPin,_speed); //引脚输出PWM,由_speed决定
          analogWrite(_speedRightPin,_speed); //引脚输出PWM,由_speed决定
}
/**************************************************
back子函数——后退子函数
函数功能:控制履带车后退
入口参数:_speed—前进速度范围:0~255
**************************************************/
void back(int _speed)
{
          digitalWrite(_dirRightPin,LOW); //引脚输出低电平,右轮后退
          digitalWrite(_dirLeftPin,LOW); //引脚输出低电平,左轮后退
          analogWrite(_speedLeftPin,_speed); //引脚输出PWM,由_speed决定
          analogWrite(_speedRightPin,_speed); //引脚输出PWM,由_speed决定
}
/**************************************************
turnLeft子函数——左转子函数
函数功能:控制履带车左转
入口参数:_speed——速度范围:0~255
**************************************************/
void turnLeft(int _speed)
{
          digitalWrite(_dirRightPin,HIGH); //引脚输出高电平,右轮前进
          analogWrite(_speedRightPin,_speed); //引脚输出PWM,由_speed决定
          analogWrite(_speedLeftPin,0); //引脚输出PWM=0,表示左轮静止不动
}
/**************************************************
turnRight子函数——右转子函数
函数功能:控制履带车右转
入口参数:_speed——速度范围:0~255
**************************************************/
void turnRight(int _speed)
{
          digitalWrite(_dirLeftPin,HIGH); //引脚输出高电平,左轮前进
          analogWrite(_speedRightPin,0); //引脚输出PWM=0,表示右轮静止不动
          analogWrite(_speedLeftPin,_speed); //引脚输出PWM,由_speed决定
}
/**************************************************
stop子函数—停止子函数
函数功能:控制履带车停止
入口参数:无
**************************************************/
void _stop()
{
          analogWrite(_speedLeftPin,0); //引脚输出低,停子转动
          analogWrite(_speedRightPin,0); //引脚输出低,停子转动
}
下面是连线图:
|