【Follow me第二季第1期】进阶 不倒翁
[复制链接]
本帖最后由 crimsonsnow 于 2024-9-27 09:48 编辑
这个任务可以通过检测倾角的变化来进行制作,十个彩灯有固定的一轮颜色,当板子向哪里倾斜的时候,那个角度上的彩灯会变成绿色
import math
import time
from adafruit_circuitplayground import cp
# 定义颜色轮函数
def color_wheel(position):
if position < 0 or position > 255:
return (0, 0, 0)
if position < 85:
return (int(position * 3), int(255 - position * 3), 0)
if position < 170:
position -= 85
return (int(255 - position * 3), 0, int(position * 3))
position -= 170
return (0, int(position * 3), int(255 - position * 3))
while True:
accel_x, accel_y, accel_z = cp.acceleration
inclination = math.atan2(accel_x, accel_y) # 获取倾角
inclination_deg = inclination * (180 / math.pi) # 将倾角转换为度
# 限制倾角在-90到90度之间
inclination_deg = max(min(inclination_deg, 90), -90)
# 映射倾角到LED索引
led_index = int((inclination_deg + 90) / 18)
# 确保led_index在0到9之间
led_index = max(min(led_index, 9), 0)
# 更新LED灯颜色
for i in range(10):
if i == led_index:
# 当前倾角对应的LED显示绿色
cp.pixels[i] = (0, 255, 0)
else:
# 根据LED位置计算颜色
color = color_wheel(255 * i // 10)
cp.pixels[i] = color
# 稍微延迟后再次检测
time.sleep(0.1)
我本想固定基底色然后变化颜色但现在好像有点刺眼
以及如果倾角过大,它会发生反判定,跑到对面的led上去
|