# 巡线机器人2--找到胶带

机器人要想学会巡线,首先得学会认识线(胶带)。

# 情景分析

  1. 上一节我们看到传感器在对着胶带和对着纸张时感应值有明显的不同,这也是巡线的前提条件。对着黑色胶带时检测到较大的数值,对着纸张时检测到较小的数值。
  2. 找线(胶带)的过程是放置机器人轮子到胶带上,但是传感器不要对准胶带。让机器人转身,传感器遇见胶带时停下来。红外反射模块上有两个传感器,转身过程中,会有一个传感器先碰到胶带,另一个还在纸张上。所以只要两个传感器相差比较大,就可以认为是碰到了胶带。

# 流程解析

  1. 机器人开机后,设置机器人右转。
  2. 用while指令等待到两个传感器感应值有大于300的差别
  3. 循环设置机器人停止移动,来终止程序。
uml diagram

# 参考程序

  • oseppBlock IDE程序。

  • Arduino IDE程序。
#include <oseppRobot.h>

OseppTBMotor L(12, 11);
OseppTBMotor R(8, 3, LOW);

void setup() {
    // 轻轻地右转,右边的传感器会先碰到胶带
    L.forward(60);
    R.backward(60);
    // 碰到胶带后,右边A0比左边A1大
    // 差距还在300以内就继续等待
    while (analogRead(A0) - analogRead(A1) < 300) {
    }
}

void loop() {
    L.forward(0);
    R.forward(0);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 运行结果

机器人放置在胶带上,但传感器不要对准胶带,打开电源开关,机器人向右缓慢转身。当右边传感器在胶带上方时,机器人停止。
程序没有像上一节一样配置A0,A1为输入模式,控制器在通电后默认就是输入模式。
如果机器人不是向右转弯,请检查马达接线和马达配置。
如果不是右边的传感器停留在胶带上,请检查红外反射传感器接线是否颠倒了。
留意电池电量,如果电量不足,传感器会不稳定,探测到错误的数值。

# 课程解读

  1. 如果机器人没有停止,或者停止在错误的位置,说明机器人不能正确识别胶带,需要调整试验环境,让线和纸的感应值相差超过300。
  2. 注意转弯的速度要缓慢。

# oseppBlock操作视频

# ArduinoIDE操作视频