本帖最后由 外星人 于 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);// 电机后退
}
}
视频我就不传了,光线不好所以没录制,给小盆友们玩得挺开心的。
|