[经验分享] 【Follow me第二季第1期】制作不倒翁——展示不倒翁运动过程中的不同灯光效果

29447945   2024-9-1 12:16 楼主

上一节我们使用超声波做了接近检测,这一节我们使用运动传感器制作不倒翁效果;

这一节用到的传感器是LIS3DH; 是一款由 STMicroelectronics 生产的超小型、高性能、低功耗的 3 轴加速度计。它能够检测和测量 x、y 和 z 轴上的加速度,即设备在这三个方向上的运动和方向变化。

这里运动传感器获取xyz轴数据,然后根据数据来控制不同的led颜色;

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT



import time
from adafruit_circuitplayground import cp

cp.pixels.brightness = 0.2  # Adjust overall brightness as desired, between 0 and 1


def color_amount(accel_component):
    """Convert acceleration component (x, y, or z) to color amount (r, g, or b)"""
    standard_gravity = 9.81  # Acceleration (m/s²) due to gravity at the earth’s surface
    accel_magnitude = abs(accel_component)  # Ignore the direction
    constrained_accel = min(accel_magnitude, standard_gravity)  # Constrain values
    normalized_accel = constrained_accel / standard_gravity  # Convert to 0–1
    return round(normalized_accel * 255)  # Convert to 0–255


def format_acceleration():
    return ", ".join(("{:>6.2f}".format(axis_value) for axis_value in acceleration))


def format_rgb():
    return ", ".join(("{:>3d}".format(rgb_amount) for rgb_amount in rgb_amounts))


def log_values():
    print("({}) ==> ({})".format(format_acceleration(), format_rgb()))


while True:
    acceleration = cp.acceleration
    rgb_amounts = [color_amount(axis_value) for axis_value in acceleration]
    cp.pixels.fill(rgb_amounts)
    log_values()
    time.sleep(0.1)

这里打印数据如下:

image.png  

实际效果如下:

cd551fafb404987ddbbde287ce770953

 

本帖最后由 29447945 于 2024-9-1 17:45 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复