下载 App
开发日志 04|机器人什么时候该浇水?学会判断
第四天,我想让农场里的机器人学会一件新事情:先看看土地的状态,再决定要不要浇水。
上一篇里,我们从一排五块土地开始,确定机器人的初始位置,用循环把相同的种植动作连起来。机器人能沿着这一排连续工作了,接下来也就有了一个很自然的问题:
机器人每次经过一块地,都需要浇水吗?
有的地刚刚浇过水,有的已经变干。如果机器人每次经过都浇一次,它虽然执行了程序,但程序还没有考虑眼前的情况。
这次,我用单行农场做了一次条件浇水演示。在这一排里准备三块胡萝卜田,把初始湿度分别设为 35%、80%、25%,方便观察不同状态下的反应。积木里使用“土壤湿度”和“如果”,让机器人自己判断。

图 1|Maker 实机演示。左侧地块湿度为 35%,右侧程序判断“土壤湿度 < 40”是否成立。
这段程序的规则是:如果脚下的土壤湿度低于 40%,就浇水;否则,继续巡查。
这里的 40% 是可以修改的游戏演示阈值。我更希望玩家试着把它改成 30% 或 50%,再看看机器人在哪些地块停下来工作。
理解这段程序,可以先从一块地开始:读一读湿度,判断条件是否成立,然后观察机器人有没有浇水。等这一格看明白了,再把同样的判断放进循环,检查整排土地。
起点依然重要。这次从 X=-1、Y=0 出发,沿固定方向检查三块作物。完成巡查后,机器人停在右侧的 X=2 草地上,整个过程都在地图范围内。玩家能够把程序里的执行顺序和眼前的地块一一对应起来。

图 2|第一次条件浇水后的实机画面:X=-1 地块的湿度升到 100%,同时能看到浇水反馈。
完整巡查中,机器人给两块低于阈值的地浇了水,跳过中间原本湿润的地块。水箱从 8 单位变成 6 单位,行动和我们写下的条件对应了起来。
做了 7 年图形化编程教学,我很在意孩子能不能说清楚自己拼出来的程序。“如果”积木当然可以记住怎么拖、怎么放,但更有意思的是,孩子能解释:这块地为什么浇了水,旁边那块为什么没有?
所以这次,我想把学习目标放在一句容易理解的话上:循环负责重复检查,判断负责这一格要不要浇水。
同一段程序走过不同的地块,会根据读到的状态做出不同的动作。玩家可以先预测结果,再运行验证;如果结果和想的不一样,就查看湿度、修改条件,或者检查机器人是不是站在正确的位置。
这一小段条件程序还有一个值得尝试的细节:当湿度恰好等于 40% 时,会发生什么?把“小于”改成别的比较方式,结果又会怎样?这些问题都可以在农场里亲手试出来。
这一排土地的演示仍然是清楚、确定的规则。等玩家掌握检测和判断,再把它们用于成熟后收获、库存不足时补种,以及多台机器人的分工,农场就会出现更多组合的可能。
我希望“涌现”能沿着这样的过程慢慢展开:先理解一条规则,再把规则连接起来,最终搭建出自己的自动化农场。




