372|0

13

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第1期】进阶任务(必做):制作不倒翁 [复制链接]

  本帖最后由 disk0 于 2024-8-21 22:22 编辑

任务理解

展示不倒翁运动过程中的不同灯光效果,这个时候需要用到 板载的三轴运动传感器 (LIS3DH),计算板载姿势,对应到灯珠亮起

 

代码部分

import time
import math
import board
import busio
import neopixel

import adafruit_lis3dh

# 初始化I2C接口
i2c = busio.I2C(board.ACCELEROMETER_SCL, board.ACCELEROMETER_SDA)

# 初始化LIS3DH传感器
lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, address=0x19)

# 初始化Neopixel灯带
num_pixels = 10
pixels = neopixel.NeoPixel(board.NEOPIXEL, num_pixels, brightness=.05, auto_write=False)

def get_tilt_index(x, y):
    """根据传感器数据计算倾斜方向的灯珠索引"""
    # 计算倾斜的角度(以度为单位)
    angle = math.atan2(y, x) * 180 / math.pi
    if angle < 0:
        angle += 360

    # 将角度映射到12个灯珠上,每个灯珠覆盖30度范围
    index = int((angle + 15) // 30) % num_pixels
    return index

while True:
    # 读取加速度值
    x, y, z = lis3dh.acceleration

    # 获取倾斜方向的灯珠索引
    index = get_tilt_index(x, y)

    # 关闭所有灯
    pixels.fill((0, 0, 0))

    # 点亮对应的灯珠
    pixels[index] = (255, 0, 0)

    # 更新Neopixel灯带
    pixels.show()

    # 延时0.2s
    time.sleep(0.2)

 

主要逻辑

1. 初始化 lis3dh  传感器 和 NeoPixel 灯带.

2. 使用计算函数,把三轴数据转化成 角度,然后匹配到10灯珠

        使用了12个方向,映射到10颗灯

3. 大循环中读取运动传感器值 并 更新 对应的灯珠

 

展示

 

动态请参考展示视频

点赞 关注
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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