5.10 感知手势¶
如果你遇到一种机器能识别自己的手势,用手势给机器发指令,机器按照手势指令工作,这想想都是一件很酷的事儿!
BlueFi的集成光学传感器具有手势识别功能,能够识别四个方向的挥手手势:向上、向下、向左、向右。
5.10.1 识别手势的方向¶
为了了解手势传感器的识别结果,我们将手势识别的结果用多行文本简单地显示到屏幕上。示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | import time
from hiibot_bluefi.sensors import Sensors
from hiibot_bluefi.screen import Screen
sensor = Sensors()
gesture = sensor.gesture
screen = Screen()
show_data = screen.simple_text_display(title="BlueFi Light sensor", title_scale=1, text_scale=2)
while True:
gesture = sensor.gesture
show_data[3].text = "gesture: {}".format(gesture)
show_data.show()
time.sleep(0.2)
|
程序保存成功后,用你的手在集成光学传感器上方约2公分左右,并分别向四个挥手,观察不同方向的手势与手势识别结果(0~4)之间的关系。
5.10.2 用手势向计算机发指令¶
这个示例中,我们用四种手势告知BlueFi播放不同的音调,让自己临空弹奏音乐。示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import time
from hiibot_bluefi.soundio import SoundOut
from hiibot_bluefi.sensors import Sensors
from hiibot_bluefi.screen import Screen
spk = SoundOut()
spk.enable = 1
sensor = Sensors()
gesture = sensor.gesture
screen = Screen()
show_data = screen.simple_text_display(title="BlueFi Light sensor", title_scale=1, text_scale=2)
while True:
gesture = sensor.gesture
show_data[3].text = "gesture: {}".format(gesture)
show_data.show()
if gesture==1:
spk.play_midi(86, 1/2)
elif gesture==2:
spk.play_midi(84, 1/2)
elif gesture==3:
spk.play_midi(88, 1/2)
elif gesture==4:
spk.play_midi(89, 1/2)
else:
time.sleep(0.1)
|
这个示例程序的关键语句是“while True:”循环程序块内的嵌套逻辑,根据识别的手势结果播放对应的midi音节。