1.9. “请保持距离”——接近感知¶
2020年初爆发的“新冠肺炎(COVID-19)”疫情,全球逾600万人感染此病,近40万人因被感染而罹难。从此我们不仅佩戴口罩出行,遇到任何陌生人时都 刻意保持距离,人与人之间近距离接触是此疫情蔓延的主要传播途径。为了防止陌生人考自己太近,我们需要给自己的衣服上增加一些装置,检测与他人的 距离,当我们的距离过近时,此装置能给我们报警提醒大家“请保持距离”。
BlueFi的集成光学传感器能够实现这一功能。
1.9.1. 请保持距离¶
下面我们使用跟接近传感器相关的代码块完成示例,当有障碍物靠近Bluefi上的接近传感器时,屏幕上显示“Keep the distance”信息提示,5颗RGB像素 灯珠显示红色,并用喇叭发出警告提示音。示例代码如下:
为了更好理解本示例程序,我们将示例程序保存到BlueFi的/CIRCUITPY/code.py文件中,BlueFi执行示例程序期间,我们用手靠近BlueFi的集成光学 传感器,你会听到急促的提示音,5颗全红色的警示灯亮起,LCD屏幕上也有相应的红色文字提示“Keep the distance!”。效果如下图:
实现本示例功能的关键程序语句是“while True:”循环程序块内的条件判断,如果sensor.proximity接近度值小于1(即等于0)则清除多行文本显示的第3行 文本内容,并关闭5颗RGB像素灯珠;否则,说明有物体接近,则让多行文本的第3行显示“Keep the distance!”且文本颜色为红色,并让5颗RGB像素灯珠显示 全红色,同时让喇叭播放第60号midi音调,并持续1/16拍。
示例代码分析:
- 第1行,初始化程序,相当与程序下载进Bluefi之后告知Bluefi从此开始执行程序
- 第2行,设置简单文本显示的标题
- 第3行,一个无穷循环的程序块
- 第4行(无穷循环程序块的第1行),判断是否有目标接近
- 第5行(无穷循环程序块的第2行),如果有目标接近,在LCD第七行显示文本”Keep the distance!”,文本颜色为红色,文本大小缩放为2
- 第6行(无穷循环程序块的第3行),播放midi编号60,持续0.0625拍
- 第7行(无穷循环程序块的第4行),设置所有像素颜色为红色
- 第8行(无穷循环程序块的第5行),否则,也就是没有目标接近时,在LCD第七行显示文本”Safe!”,文本颜色为绿色,文本大小缩放为2
- 第9行(无穷循环程序块的第6行),清除所有像素颜色,即熄灭所有彩灯
至此,你是否已经能设计一件“独特的衣服”,穿着这件衣服出门,遇到任何与你距离过近的人,都会发出声、光警示,提醒你们保持距离。
总结:
- 接近感知和接近传感器
- 简单文本显示
- 文本字体的缩放
- 穿戴设备和防疫措施
- 本节中,你总计完成了10行代码的编写工作
重要
出现的代码块
- 有目标接近 , 集成光学传感器的proximity属性, 即接近度