极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 72039|回复: 41

L293D电机模块 + 超声波测距模块 做的arduino小车

[复制链接]
发表于 2013-4-27 20:19:32 | 显示全部楼层 |阅读模式
本帖最后由 外星人 于 2015-11-18 00:00 编辑

  我算是刚刚入门的新人 ,今天刚写好的代码,而且已经测试成功,当做送给和我一样的新手们小礼物,如果家里有小孩的话那可是省了一些钱去买一些低级玩具了,哈哈。(本人水平有限,高手别见笑!)
  功能:让小车和人或者物体固定在某个距离内。

L293D模块网上有使用说明文档,使用方法基本都可以在网上找得到。
好了,上代码:
  (很多人都问“板子所有的端口不是被占用了吗?”,其实并没有,仔细检查板子上的引脚就会发现根本就没有连线出来,所以我们要好好利用。PWM端口分别为Pin10和Pin9,可以接舵机等设备,另外Pin0、Pin1、Pin2和Pin13需要电烙铁焊出引脚来,Pin0为RX,Pin1为TX,接上蓝牙或串口WIFI模块就可以无线控制啦!)

//因为数字端口2和13未被占用,所以我们就要2和13端口来接超声波模块。
#include <AFMotor.h>
int inputPin=13;  // 定义超声波Trig
int outputPin=2; // 定义超声波Echo
AF_DCMotor motor1(1, MOTOR12_64KHZ);// 创建电机#1号,速度是64KHz pwm
AF_DCMotor motor2(2, MOTOR12_64KHZ);// 创建电机#2号,速度是64KHz pwm
void setup()
{
  Serial.begin(9600);
  pinMode(inputPin, INPUT);
  pinMode(outputPin, OUTPUT);
  motor1.setSpeed(150);// 设置电机速度,从200/255之间任意(我这俩电机速度不一样,所以我就这样设置)
  motor2.setSpeed(180);// 设置电机速度,从200/255之间任意(大家可以按照自己的电机转速来调节一样的速度就可以了)
  Serial.println("Motor test!");
}
void loop()
{
  digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
  delayMicroseconds(2);
  digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
  delayMicroseconds(10);
  digitalWrite(outputPin, LOW);    // 保持发出超声波信号接口低电平
  int distance = pulseIn(inputPin, HIGH);  // 读出脉冲时间
  distance= distance/58;   // 将脉冲时间转化为距离(单位:厘米)
  Serial.println(distance);   //输出距离值                 
  delay(50);   
  if (distance == 50)    //等于50厘米就停止
  {
     Serial.print("tack");
     motor1.run(RELEASE);// 电机停止
     motor2.run(RELEASE);// 电机停止
  }
  if (distance < 120 )   //大于50厘米就前进
  {
    Serial.print("tick");
    motor1.run(FORWARD);// 电机前进
    motor2.run(FORWARD);// 电机前进
  }
  if (distance > 50)   //小雨50厘米就后退
  {
    Serial.print("tock");
    motor1.run(BACKWARD);// 电机后退
    motor2.run(BACKWARD);// 电机后退
  }
}

视频我就不传了,光线不好所以没录制,给小盆友们玩得挺开心的。

本帖子中包含更多资源

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

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 赞一个! 这个电机板挺好的

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-4-27 20:33:49 | 显示全部楼层
发车子图上来








本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2013-4-27 23:15:16 | 显示全部楼层
魔术手程序吗?
回复 支持 反对

使用道具 举报

发表于 2013-4-28 17:27:34 | 显示全部楼层
谢谢分享吖,很有用!{:soso_e100:}
回复 支持 反对

使用道具 举报

发表于 2013-4-28 18:22:13 | 显示全部楼层
L293D模块不是把所有的引脚都占用了吗?楼主的超声波模块的接线式咋样的?求解
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-29 18:18:56 | 显示全部楼层
caodingguang 发表于 2013-4-28 18:22
L293D模块不是把所有的引脚都占用了吗?楼主的超声波模块的接线式咋样的?求解

第2脚和第13脚没有占用,还有,如果你不用舵机的话还有两个舵机引脚可以用。
回复 支持 反对

使用道具 举报

发表于 2013-7-23 09:38:40 | 显示全部楼层
你好,我想问一下超声波传感器有四个端口,而我这里只有三个引脚,分别是G,V,S,然后传感器的输出、输入信号端口是并联接在S引脚上吗?
回复 支持 反对

使用道具 举报

发表于 2013-8-24 20:39:43 | 显示全部楼层
嘿嘿 不错,喜欢这种... 准备搞一个去
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-3 11:58:22 | 显示全部楼层
乂_____球。 发表于 2013-7-23 09:38
你好,我想问一下超声波传感器有四个端口,而我这里只有三个引脚,分别是G,V,S,然后传感器的输出、输入信 ...

你这个传感器我没用过,不过我知道你的传感器的S端是连接arduino的ANALOG口,代码另外写。
回复 支持 反对

使用道具 举报

发表于 2013-9-4 16:37:38 | 显示全部楼层
   L293D电机模块怎么连接到Arduino Sensor Shield V5.0 传感器扩展板上面啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-4 19:31:47 | 显示全部楼层
BOA 发表于 2013-9-4 16:37
L293D电机模块怎么连接到Arduino Sensor Shield V5.0 传感器扩展板上面啊?

如果你会用电烙铁这些连接问题是没问题滴
把L293D电机模块上的排针焊出来换成针脚加长的排母,这样传感器扩展板就可以插到电机板上了。

加长的排母可以上taobao网搜索
比如这个
http://item.taobao.com/item.htm? ... &id=17981854404
回复 支持 反对

使用道具 举报

发表于 2013-9-6 23:56:38 | 显示全部楼层
程序检测报错怎么回事啊:declared in this scope
D:\arduino-1.0.1\libraries\AFMotor\AFMotor.cpp:386: error: 'delay' was not declared in this scope
回复 支持 反对

使用道具 举报

发表于 2013-9-7 00:07:04 | 显示全部楼层
外星人 发表于 2013-9-4 19:31
如果你会用电烙铁这些连接问题是没问题滴。
把L293D电机模块上的排针焊出来换成针脚加长的排母,这样传 ...

非常感谢楼主的回答,不过这种高难度动作我看我是做不来,我现在没用扩展板了,直接堆叠在arduino控制板上,现在又遇到一个新问题,我把库文件已经添加到库里了,运行你上面的代码和库文件代码会提示编译出错,是怎么回事啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-11 00:31:23 | 显示全部楼层
BOA 发表于 2013-9-7 00:07
非常感谢楼主的回答,不过这种高难度动作我看我是做不来,我现在没用扩展板了,直接堆叠在arduino控制板上 ...

你不要arduino-1.0.1版本,你换成arduino0022试试。
回复 支持 反对

使用道具 举报

发表于 2014-3-4 11:07:51 | 显示全部楼层
请问电机引脚不用定义吗?
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 14:22 , Processed in 0.045501 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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