跳到正文
芯片启蒙

把愿望改写成规则

10 分钟

「天黑有人时开灯」已经比「聪明的灯」清楚,但工程师还要继续追问:多暗算天黑?检测到人以后亮多久?两个传感器意见冲突怎么办?把愿望改写成可判断的规则,芯片才有可能执行。

找出条件和动作

先给输入起名字:D=1 表示天黑,P=1 表示有人;输出 L=1 表示灯亮。核心规则可以写成:

符号 就是「并且」。只有天黑和有人两个条件同时成立,输出才是 1。白天有人、夜里无人,都应该输出 0。

把模糊词变成可测量的量

「很暗」不是数字,不同人理解不同。光线传感器会给出一个数,例如 0 到 1000。我们可以规定低于 200 算暗。这叫阈值:用一条界线把连续变化的世界分成两种状态。阈值不是凭感觉拍脑袋,要在真实房间里测白天、黄昏、夜晚的数据,再选择合适位置。

「人离开后过一会儿熄灭」也要变成「连续十秒没有检测到人后熄灭」。时间、亮度、距离都要有单位。没有单位的数字容易酿成错误:十到底是十秒、十毫秒,还是十分钟?

规则还要考虑例外

传感器偶尔抖一下,不该让灯闪烁;电池快没电时,可以降低亮度;旁边有手动开关时,人的命令可能优先。先写最小规则,再逐步添加例外,比一开始写一大团条件更容易检查。

练一练:把「房间太热就开风扇」改写成可执行规则,至少写出温度阈值、关闭条件和一个安全例外。

小纸条

为什么「天黑时开灯」还不是完整的工程规则?