极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 32368|回复: 25

有图有程序,智能小车程序或者硬件哪出问题了T T

[复制链接]
发表于 2015-4-24 13:10:42 | 显示全部楼层 |阅读模式
本帖最后由 血阳 于 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);     //引脚输出低,停子转动
}


下面是连线图:








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-4-24 13:15:42 | 显示全部楼层
你的程序有问题,电机驱动板的资料在这里找:
http://www.adafruit.com/products/81
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 15:31:28 | 显示全部楼层
i7456 发表于 2015-4-24 13:15
你的程序有问题,电机驱动板的资料在这里找:
http://www.adafruit.com/products/81

大概是什么问题啊?引脚定义错误?还是函数就没斜对?英文看着无力啊···········
回复 支持 反对

使用道具 举报

发表于 2015-4-24 16:02:58 | 显示全部楼层
血阳 发表于 2015-4-24 15:31
大概是什么问题啊?引脚定义错误?还是函数就没斜对?英文看着无力啊···········

电机驱动板上是用74HC595(串入并出)芯片控制L293D的管脚的。
你的这个定义,控制不了电机。
#define _speedLeftPin 5         
#define _speedRightPin 4      //定义引脚4,5控制左轮
#define _dirLeftPin 6
#define _dirRightPin 7        //定义引脚6,7控制右轮
你需要控制74HC595,让它控制L293D,从而控制电机。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 16:42:17 | 显示全部楼层
i7456 发表于 2015-4-24 16:02
电机驱动板上是用74HC595(串入并出)芯片控制L293D的管脚的。
你的这个定义,控制不了电机。
#define _s ...

哦哦哦,明白了,我之前就一直在这里纠结,但是不知道怎么改。
回复 支持 反对

使用道具 举报

发表于 2015-4-24 20:22:40 | 显示全部楼层
哥们,不要用这个驱动板了,这个驱动板不好用,不如用L298N
这个扩展板搞不清使用了哪个引脚,串入并出也不好写程序,
强烈建议你使用L298n点击驱动板
我的贴子http://www.wifi-robots.com/thread-6743-1-1.html
回复 支持 反对

使用道具 举报

发表于 2015-4-24 20:24:09 | 显示全部楼层
直接用L298N更方便
回复 支持 反对

使用道具 举报

发表于 2015-4-24 20:26:16 | 显示全部楼层
还有,调试不要使用干电池,浪费太大了,直接上7--12V电源就行(就是充电器)
调试成功再考虑电池供电问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 20:39:05 | 显示全部楼层
潇洒哥 发表于 2015-4-24 20:26
还有,调试不要使用干电池,浪费太大了,直接上7--12V电源就行(就是充电器)
调试成功再考虑电池供电问题

手机充电器不是才5V吗{:3_58:}
回复 支持 反对

使用道具 举报

发表于 2015-4-24 21:03:01 | 显示全部楼层
貌似电池问题,我用的9v的
回复 支持 反对

使用道具 举报

发表于 2015-4-24 21:15:59 | 显示全部楼层
arduino的外置电源供电口做了稳压处理,存在一定的压降,官方的外置电源供电范围为7--12V
回复 支持 反对

使用道具 举报

发表于 2015-4-24 21:16:49 | 显示全部楼层
要带动那么多电机,建议使用9V或12V
回复 支持 反对

使用道具 举报

发表于 2015-4-24 21:18:16 | 显示全部楼层
直接用L298N更方便

仁兄正解
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 21:24:03 | 显示全部楼层
潇洒哥 发表于 2015-4-24 20:22
哥们,不要用这个驱动板了,这个驱动板不好用,不如用L298N
这个扩展板搞不清使用了哪个引脚,串入并出也不 ...

嗯嗯!我觉得也是该换个简单点的驱动模块,毕竟我是第一次玩这个T T。感觉调都要调死掉了··········
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 21:38:31 | 显示全部楼层
潇洒哥 发表于 2015-4-24 21:18
仁兄正解

淘宝了一下,发现L298N这个驱动模块好像也有很多板式的,能推荐一个能和arduino配合,而且比较简单好用的吗?给个链接什么的好不~{:3_59:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 08:35 , Processed in 0.047763 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表