Arduino_循迹小车
直接上图:对,您没有看错!!!~~下面的确是舵机~~
看不清,好吧~~ 来,小乌龟,翻个身。。。
同志们,下面进行“车展”o(≧v≦)o~~好棒
ARDUIN 代码:基于 Arduino 的循迹小车
//包含 Arduino 的 Servo.h 库
#include <Servo.h>
Servoservo_L;
Servoservo_R;
//评估更改伺服舵机停止点脉冲的值
intservo_R_stop = 89; //设置右伺服舵机的中间位置
intservo_L_stop = 89; //设置左伺服舵机的中间位置
//设置右伺服舵机基于中间的前进和反转速度的值
intservo_R_forward = servo_R_stop + 50;
intservo_R_reverse = servo_R_stop - 50;
//设置左伺服舵机基于中间的前进的反转速度的值
intservo_L_forward = servo_L_stop + 50;
intservo_L_reverse = servo_R_stop - 50;
//改变下面的值来更改电机行动
intturn_time = 1000; //5000 ms = 5 s 调头时间
//用来保存定时变量的值名
unsignedlongtimer_startTick;
//创建传感器读数的变量
intsensor1 = 0;
intsensor2 = 0;
intsensor3 = 0;
intsensor4 = 0;
intsensor5 = 0;
//创建校对读数的变量
intadj_1 = 0;
intadj_2 = 0;
intadj_3 = 0;
intadj_4 = 0;
intadj_5 = 0;
//可以修改下列最大最小值,来调整小车上的每个传感器
ints1_min = 240;
ints1_max = 800;
ints2_min = 220;
ints2_max = 910;
ints3_min = 320;
ints3_max = 890;
ints4_min = 230;
ints4_max = 730;
ints5_min = 310;
ints5_max = 960;
//当传感器正在读取黑线时,定义该临界值
intlower_threshold = 40;
//当传感器正在读取白色海报时,定义该临界值
intupper_threshold = 210;
voidsetup()
{
servo_R.attach(2); //使用 Servo.h 库将 attach servo 连接 R 到 引脚 2
servo_L.attach(3); //使用 Servo.h 库将 attach servo 连接 L 到 引脚 3
//声明左侧电机
servo_R.write(servo_R_forward);
//声明右侧电机
servo_L.write(servo_L_forward);
}
voidupdate_sensors()
{
//该代码将读取传感器 1 数据
sensor1 = analogRead(0);
adj_1 = map(sensor1, s1_min, s1_max, 0, 255);
adj_1 = constrain(adj_1, 0, 255);
//该代码将读取传感器 2 数据
sensor2 = analogRead(1);
adj_2 = map(sensor2, s2_min, s2_max, 0, 255);
adj_2 = constrain(adj_2, 0, 255);
//该代码将读取传感器 3 数值
sensor3 = analogRead(2);
adj_3 = map(sensor3, s3_min, s3_max, 0, 255);
adj_3 = constrain(adj_3, 0, 255);
//该代码将读取传感器 4 的值
sensor4 = analogRead(3);
adj_4 = map(sensor4, s4_min, s4_max, 0, 255);
adj_4 = constrain(adj_4, 0, 255);
//该代码将读取传感器 5 的值
sensor5 = analogRead(4);
adj_5 = map(sensor5, s5_min, s5_max, 0, 255);
adj_5 = constrain(adj_5, 0, 255);
}
voidloop()
{
update_sensors(); //更新传感器
//首先,检查中兴传感器数值
if(adj_3 < lower_threshold)
{
//如果中心传感器值小于临界值,检查周围传感器
if(adj_2 > upper_threshold && adj_4 > upper_threshold)
{
forward_motors();
}
//要小车在碰到黑盒子时调头
elseif(adj_1 < 1)
{
if(adj_2 < 1)
{
if(adj_4 < 1)
{
if(adj_5 < 1)
{
//复位定时器
timer_startTick = millis();
turn_motors(); //左转调头
}
}
}
}
}
else
{
//首先检查传感器 1
if(adj_1 < lower_threshold && adj_5 > upper_threshold)
{
turn_left();
}
//然后检查传感器 5
elseif(adj_1 > upper_threshold && adj_5 < lower_threshold)
{
turn_right();
}
//如果不是传感器 1 或者传感器 5,那么就检查传感器 2
elseif(adj_2 < lower_threshold && adj_4 > upper_threshold)
{
turn_left();
}
//如果不是传感器 2, 那就检查传感器 4
elseif(adj_2 > upper_threshold && adj_4 < lower_threshold)
{
turn_right();
}
}
}
//开始电机控制功能
voidforward_motors()
{
//无限期前进
servo_R.write(servo_R_forward);
servo_L.write(servo_L_forward);
}
voidturn_left()
{
//左转
servo_R.write(servo_R_forward);
servo_L.write(servo_L_reverse);
}
voidturn_right()
{
//右转
servo_R.write(servo_R_reverse);
servo_L.write(servo_L_forward);
}
voidturn_motors()
{
//根据 "turn_time" 变量中的时间左转调头
while(millis() < timer_startTick + turn_time)
{
servo_R.write(servo_R_forward);
servo_L.write(servo_L_reverse);
}
}
Arduino_循迹小车 视频:
http://www.tudou.com/programs/view/ku5VLjlvxaU/ 能列一下清单吗?想知道用到了哪些东西。。。。。
还有问问,这个供电是先给mini供电后,通过mini引脚再给舵机供电吗?
最后问个,看你的接线,那个舵机和板子的接线,你是重新设计了一个电路然后通过设计的板子再接到mini的吗?因为看到你的接线很规整,所以想问问。 楼主~你的库函数哪里有下载啊?
Arduino IDE里面自带舵机库。 哇哦~学习学习~niubility 血阳 发表于 2015-5-25 23:51 static/image/common/back.gif
哇哦~学习学习~niubility
谢谢支持! 血阳 发表于 2015-5-27 01:00 static/image/common/back.gif
能列一下清单吗?想知道用到了哪些东西。。。。。
还有问问,这个供电是先给mini供电后,通过mini引脚再给 ...
150*150*3mm 亚克力板一块
一个万向轮 + 2车轮+ 2联轴器
2个995舵机
7.4V电池 一块
固定舵机直角架(自己做的 4个)
Arduino Nano 一块(直接7.4供电→VIN)
2596减压模块 一个(7.4V电池经减压至 5V→舵机)
5个循迹管
150Ω、10K电阻各 5 个, 220Ω电阻 1 个(220Ω电阻接发光二极管用)
自锁按键一个
PCB单面覆铜板一“小”快
铜柱、螺母、螺丝(这个。。。就不数了吧~)
由于Arudino_循迹小车的PCB压缩文件太大~~无法上传
便附循迹板原理图:
请叫我小萌兽 发表于 2015-5-30 17:53 static/image/common/back.gif
150*150*3mm 亚克力板一块
一个万向轮 + 2车轮+ 2联轴器
2个995舵机
谢谢你的耐心解答,感觉好详细,很有帮助。{:3_52:} 突然还有个问题,就是我看的舵机讲解,都是只能让舵机转一定角度。
为什么你的这个程序能够让舵机一直转动?
是哪段的代码实现了这个功能? 血阳 发表于 2015-6-5 23:50 static/image/common/back.gif
突然还有个问题,就是我看的舵机讲解,都是只能让舵机转一定角度。
为什么你的这个程序能够让舵机一直转动 ...
因为我将舵机改装成了“能连续旋转的伺服舵机”
详情请看:http://www.geek-workshop.com/thread-14885-1-2.html
请叫我小萌兽 发表于 2015-6-6 21:40 static/image/common/back.gif
因为我将舵机改装成了“能连续旋转的伺服舵机”
详情请看:http://www.geek-workshop.com/thread-14885- ...
难怪啊,在这看了半天不理解,原来是改过的舵机啊,学习了~
页:
[1]