第6课 红外避障

认识你的火星车的侧边”眼睛”——红外避障传感器!

这些灵敏的传感器帮助你的 GalaxyRVR 检测并避开两侧的障碍物,就像拥有周边视觉一样。了解它们的工作原理,并编程让火星车自动绕开物体。

准备好让你的火星车成为一个智能的避障高手吧!

学习目标

  • 了解红外避障模块的工作原理及其在火星车中的应用。

  • 学习如何在 Scratch 中读取和应用红外避障模块的数据。

  • 使用红外模块和 Scratch 舞台创建一个火星探索主题的避障游戏。

认识避障模块

向你介绍 GalaxyRVR 的新伙伴——红外避障模块!这个灵巧的小设备帮助你的火星车检测和避开障碍物。让我们看看它是如何工作的:

../_images/ir_avoid2.png

认识四个重要引脚:

  • GND - 接地连接(构成回路)

  • + - 电源输入(需要3.3V至5V电源)

  • Out - 信号输出(发送”检测到障碍物”的信号)

  • EN - 使能引脚(控制模块何时工作)

工作原理——隐形手电筒:

把这个模块想象成拥有一个隐形手电筒和一副特殊眼镜:

../_images/ir_receive2.png
  1. 发射器发出红外光(肉眼不可见)

  2. 当光线遇到障碍物时,会反射回来

  3. 接收器”看到”反射回来的光

  4. 模块发送信号:”前方有障碍物!”

关于传感器的小知识:

  • 检测范围 :2-40厘米(大约一支铅笔盒的长度!)

  • 颜色有影响 :对浅色物体检测效果最好

  • 深色物体 :较难从远处检测到

高级控制(供好奇者参考):

  • EN引脚 :跳线帽使模块始终保持激活状态。如果你想通过代码控制模块,请取下跳线帽。

    ../_images/ir_cap2.png
  • 两个调节旋钮

    • 一个旋钮控制红外光的发射距离

    • 一个旋钮调节光的频率

    ../_images/ir_avoid_pot2.png

现在你已经认识了你的新伙伴,让我们把它连接到火星车上,开始编程吧!

测试你的红外传感器

  1. 首先,请执行 连接应用到 GalaxyRVR 的步骤。

  1. 让我们将传感器调整到最佳性能!

    1. 确保红外组件保持笔直。如有需要,请轻轻调整。

    2. 将一个物体(如火星车的包装盒)放在20厘米处。旋转旋钮直到指示灯亮起。通过将物体移近和移远来测试。

    3. 对另一个红外模块重复同样操作。

  2. 然后,请执行 连接应用到 GalaxyRVR 的步骤。

  3. 在 GalaxyRVR 分类中找到”左侧红外状态”和”右侧红外状态”积木块,并勾选其复选框。

    ../_images/4_ir_statusblock.png
  4. 传感器数值现在将显示在舞台上。

    ../_images/4_ir_statusvalue.png
  5. 在每个红外传感器附近挥动你的手,观察数值的变化!

数值含义:

  • True(真) = 检测到障碍物

  • False(假) = 路径通畅

现在你已经准备好了解你的火星车能”看到”什么了!

编程让火星车避障

让我们教你的 GalaxyRVR 使用红外传感器自动躲避障碍物!

  1. 首先,请执行 连接应用到 GalaxyRVR 的步骤。

  2. 以绿旗积木块开始程序。

    ../_images/4_ir_start.png
  3. 将安全速度设置为30%,便于测试和调试。

    ../_images/4_ir_speed.png
  4. 找到 当左侧红外被遮挡 积木块,用于左侧传感器检测。

    ../_images/4_ir_when_blocked.png
  5. 当左侧传感器检测到障碍物时,让火星车右转。

    ../_images/4_ir_turn_right.png
  6. 持续右转,直到左侧不再检测到障碍物。

    ../_images/4_ir_wait_until.png
  7. 路径通畅后停止移动。

    ../_images/4_ir_stop.png
  8. 用手触发左侧红外传感器进行测试。GalaxyRVR 应智能地向右转以避开障碍物。

  9. 长按积木块,从菜单中选择”复制”来复制代码。

    ../_images/4_ir_duplicate.png
  10. 在复制的代码中,交换左右两侧,使其处理右侧障碍物。

    ../_images/4_ir_left_right.png
  11. 为防止两个传感器同时被触发时出现异常行为,添加一个”停止该精灵的其他脚本”积木块。这确保了每次只处理一个传感器事件。

    ../_images/4_ir_stop_script.png

    备注

    停止脚本积木块可能与定时移动积木块冲突,因此请尽量避免同时使用它们。

  12. 现在,当任一侧检测到障碍物时,你的 GalaxyRVR 将向左或向右转。用双手同时触发两个传感器进行测试。

  13. 在每个代码段下方添加一个前进积木块,使火星车在避障后继续前进。

    ../_images/4_ir_avoid_move.png

现在点击绿旗!你的 GalaxyRVR 将持续前进,智能地躲避障碍物,并在避开后继续前进。

与红外模块相关的积木块

  • 当左侧红外传感器检测到障碍物时触发的事件积木块

    • 在下拉菜单中将”左”改为”右”

    ../_images/ir_when.png
  • 暂停程序,直到左侧红外传感器不再检测到障碍物

    • 将”左”改为”右”以用于另一个传感器

    • 将”未检测到”改为”检测到”以使用相反条件

    ../_images/ir_wait_until.png
  • 条件积木块,如果左侧红外传感器检测到障碍物则返回真(TRUE)

    • 非常适合与 if 语句搭配使用

    • 将”左”改为”右”以用于另一个传感器

    ../_images/ir_condition.png
  • 显示左侧红外传感器当前检测状态

    ../_images/ir_left_value.png
  • 显示右侧红外传感器当前检测状态

    ../_images/ir_right_value.png