# 巡线机器人--前言

在生活中已经有很多机器人在默默地为我们服务,比如物流机器人在超大型仓库内自动搬运、分类快递。仓库内隐藏着许多引导线,指引机器人移动。我们也来尝试一下!


# 巡线机器人1--读取红外反射传感器

# 情景分析

  1. 我们的试验是铺一张白色的纸,上面用黑色胶带贴出一条圆形轨道,机器人需要沿着轨道前进,不能脱离轨道。
  2. 机器人安装有Line Tracker模块。它的底部有两个红外反射传感器,每个传感器有两个窗户,一个窗户发射红外光,另一个窗户接收红外光。如果传感器对着反光的东西(比如白色的纸),接收窗就能感应到比较多红外光线。如果对着不反光的东西(比如黑色的胶带),接收窗就只能感应到少量的红外光线。要注意传感器只对黑白敏感,对颜色没有分辨能力,比如红色纸和蓝色胶带可能分辨不出来,因为它们的反光能力是相当的。
  3. Line Tracker模块上两个传感器的距离是12毫米,我们要使用16毫米宽度的胶带(普通的电工胶带),让两个传感器能同时感应到胶带。
  4. 传感器输出的是模拟信号,可以区分接收到了多少光线,需要接在控制器的模拟端口上(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

# 运行结果

上传代码,打开串口监视器,将机器人放到白纸上,看看打印出来的数值是多少。再把传感器对准胶带或其他东西,看看打印出来的数值是多少。

# 程序解读

我们发现一个问题,对着同样的东西不动的时候,数字不稳定,是有小小的跳动。其实这是正常的,我们拿尺子量一个东西的长度,落在两个最小的刻度中间,就只能大约是多少。每次大约出来的数可能还不一样。

# oseppBlock操作视频

# ArduinoIDE操作视频