上一节我们使用超声波做了接近检测,这一节我们使用运动传感器制作不倒翁效果;
这一节用到的传感器是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)
这里打印数据如下:
实际效果如下:
本帖最后由 29447945 于 2024-9-1 17:45 编辑