-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtracking_led.py
More file actions
76 lines (59 loc) · 2.49 KB
/
Copy pathtracking_led.py
File metadata and controls
76 lines (59 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import time
import usb.core
from tuning import Tuning
from usb_pixel_ring_v2 import PixelRing
def main():
# 查找 ReSpeaker V2 设备
dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
if not dev:
print("未找到 ReSpeaker Mic Array V2 设备")
return
Mic_tuning = Tuning(dev)
pixel_ring = PixelRing(dev)
# 降低整体亮度 (0x01 到 0x1F,默认可能是 0x14 左右,设为 0x05 会非常柔和)
pixel_ring.set_brightness(0x05)
# 修改色调:原版是亮蓝色,我们换成柔和的「暖橘色 / 琥珀色」 (主色 0x200500,辅助色 0x050000)
# rgb值为 0xRRGGBB
pixel_ring.set_color_palette(0x200500, 0x050000)
# 切换到 Alexa "echo" 模式灯效风格
pixel_ring.change_pattern('echo')
pixel_ring.off()
print("=== 🎤 智能人声追踪雷达已启动 ===")
print("规则:当检测到有人说话时,灯环会像雷达一样苏醒,并指向您的方位。")
print("安静下来后,它会进入 '思考' 的呼吸态。")
print("按下 Ctrl+C 退出")
keep_awake_timer = 0
state = "idle"
try:
while True:
# 读取当前是否有人说话
is_voice = Mic_tuning.is_voice()
if is_voice:
# 获取说话人方位角
angle = Mic_tuning.direction
# pixel_ring 会自动被唤醒并指向那个角度(高亮)
pixel_ring.wakeup(angle)
print(f"👉 发现目标!方位角:{angle}°")
# 保持唤醒状态10个周期
keep_awake_timer = 10
state = "awake"
else:
# 没人说话了
if keep_awake_timer > 0:
keep_awake_timer -= 1
# 刚说完话,切换到思考态转圈
if keep_awake_timer == 0 and state == "awake":
pixel_ring.think()
state = "thinking"
else:
# 持续没人说话,关闭灯光或让它保持安静状态
# 我们让它一直处于思考打转状态,直到再次发声
pass
time.sleep(0.2)
except KeyboardInterrupt:
pass
finally:
pixel_ring.off()
print("\n已关闭LED。")
if __name__ == '__main__':
main()