外星人 发表于 2013-4-27 20:19:32

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

本帖最后由 外星人 于 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);// 电机后退
}
}

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

外星人 发表于 2013-4-27 20:33:49

发车子图上来








熊猫 发表于 2013-4-27 23:15:16

魔术手程序吗?

马仔 发表于 2013-4-28 17:27:34

谢谢分享吖,很有用!{:soso_e100:}

caodingguang 发表于 2013-4-28 18:22:13

L293D模块不是把所有的引脚都占用了吗?楼主的超声波模块的接线式咋样的?求解

外星人 发表于 2013-4-29 18:18:56

caodingguang 发表于 2013-4-28 18:22 static/image/common/back.gif
L293D模块不是把所有的引脚都占用了吗?楼主的超声波模块的接线式咋样的?求解

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

乂_____球。 发表于 2013-7-23 09:38:40

你好,我想问一下超声波传感器有四个端口,而我这里只有三个引脚,分别是G,V,S,然后传感器的输出、输入信号端口是并联接在S引脚上吗?

hick 发表于 2013-8-24 20:39:43

嘿嘿 不错,喜欢这种... 准备搞一个去

外星人 发表于 2013-9-3 11:58:22

乂_____球。 发表于 2013-7-23 09:38 static/image/common/back.gif
你好,我想问一下超声波传感器有四个端口,而我这里只有三个引脚,分别是G,V,S,然后传感器的输出、输入信 ...

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

BOA 发表于 2013-9-4 16:37:38

   L293D电机模块怎么连接到Arduino Sensor Shield V5.0 传感器扩展板上面啊?

外星人 发表于 2013-9-4 19:31:47

BOA 发表于 2013-9-4 16:37 static/image/common/back.gif
L293D电机模块怎么连接到Arduino Sensor Shield V5.0 传感器扩展板上面啊?

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

加长的排母可以上taobao网搜索
比如这个
http://item.taobao.com/item.htm?spm=a230r.1.14.42.0c1QVy&id=17981854404

BOA 发表于 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

BOA 发表于 2013-9-7 00:07:04

外星人 发表于 2013-9-4 19:31 static/image/common/back.gif
如果你会用电烙铁这些连接问题是没问题滴。
把L293D电机模块上的排针焊出来换成针脚加长的排母,这样传 ...

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

外星人 发表于 2013-9-11 00:31:23

BOA 发表于 2013-9-7 00:07 static/image/common/back.gif
非常感谢楼主的回答,不过这种高难度动作我看我是做不来,我现在没用扩展板了,直接堆叠在arduino控制板上 ...

你不要arduino-1.0.1版本,你换成arduino0022试试。

幸福快线2 发表于 2014-3-4 11:07:51

请问电机引脚不用定义吗?
页: [1] 2 3
查看完整版本: L293D电机模块 + 超声波测距模块 做的arduino小车