# 巡线机器人--前言
在生活中已经有很多机器人在默默地为我们服务,比如物流机器人在超大型仓库内自动搬运、分类快递。仓库内隐藏着许多引导线,指引机器人移动。我们也来尝试一下!
# 巡线机器人1--读取红外反射传感器
# 情景分析
- 我们的试验是铺一张白色的纸,上面用黑色胶带贴出一条圆形轨道,机器人需要沿着轨道前进,不能脱离轨道。
- 机器人安装有
Line Tracker
模块。它的底部有两个红外反射传感器,每个传感器有两个窗户,一个窗户发射红外光,另一个窗户接收红外光。如果传感器对着反光的东西(比如白色的纸),接收窗就能感应到比较多红外光线。如果对着不反光的东西(比如黑色的胶带),接收窗就只能感应到少量的红外光线。要注意传感器只对黑白敏感,对颜色没有分辨能力,比如红色纸和蓝色胶带可能分辨不出来,因为它们的反光能力是相当的。 Line Tracker
模块上两个传感器的距离是12毫米,我们要使用16毫米宽度的胶带(普通的电工胶带),让两个传感器能同时感应到胶带。- 传感器输出的是
模拟信号
,可以区分接收到了多少光线,需要接在控制器的模拟端口
上(A0-A7端口)。我们将机器人左边的传感器(通道2)接到A1端口,右边的传感器(通道1)接到A0端口。获取模拟量的指令是analogRead(pin)
,pin是端口号,结果为接收到了多少红外光线,范围是从0到1023 。模块的电路设计为接收到越多光线时,值越小。所以白色的纸会有更小数值,黑色的胶带有更大的数值。可以想象成检测目标吸收了多少红外光线。对应的积木
# 参考程序
- oseppBlock IDE程序
- Arduino IDE程序
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
}
void loop() {
Serial.print(analogRead(A0));
Serial.print(",");
Serial.println(analogRead(A1));
delay(100);
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 运行结果
上传代码,打开串口监视器,将机器人放到白纸上,看看打印出来的数值是多少。再把传感器对准胶带或其他东西,看看打印出来的数值是多少。
# 程序解读
我们发现一个问题,对着同样的东西不动的时候,数字不稳定,是有小小的跳动。其实这是正常的,我们拿尺子量一个东西的长度,落在两个最小的刻度中间,就只能大约是多少。每次大约出来的数可能还不一样。