204|1

59

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【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上去

     

最新回复

如果倾角过大,它会发生反判定,跑到对面的led上去,怎么解决这种情况   详情 回复 发表于 2024-9-28 07:54
点赞 关注
 
 

回复
举报

6570

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

如果倾角过大,它会发生反判定,跑到对面的led上去,怎么解决这种情况

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表