使用MicroPython和pyboard开发板(7):加速度传感器

使用MicroPython和pyboard开发板(7):加速度传感器

加速度计是测量物体运动加速度和姿态的传感器,经常用于运动姿态感知控制和惯性导航。这篇文章将介绍如何使用MicroPython和pyboard的板载加速度传感器来读取加速度信号,感知左右倾斜。

加速度传感器

使用加速度传感器

pyboard上有一个加速度传感器,可用于检测电路板的角度和运动。x、y、z 三个方向各有一个不同的传感器。要获取加速度计的值,需要创建一个pyb.Accel()对象,然后调用 x() 方法。

>>> accel = pyb.Accel()
>>> accel.x()
7

这会返回一个带符号的整数,其值在大约±30之间。需要注意的是,测量值的噪声很大,这意味着即使电路板保持完全静止,测量值也会有一些变化,因此,通常不会使用x()方法的精确值,而看它是否在某个范围内。

这里使用led来指示电路板的水平状态,如果电路板不平,就打开一个LED灯。

accel = pyb.Accel()
light = pyb.LED(3)
SENSITIVITY = 3

while True:
    x = accel.x()
    if abs(x) > SENSITIVITY:
        light.on()
    else:
        light.off()

    pyb.delay(100)

创建Accel和LED对象,然后获取加速度计x方向的值,如果x的大于某个特定值SENSITIVITY,则LED亮起,否则熄灭。循环中有一个小的延迟,否则当x的值接近SENSITIVITY时,LED就会闪烁。在pyboard上运行这个循环,左右倾斜电路板,可以看到LED灯亮起或熄灭。

也可以修改上面的代码,使蓝色LED越倾斜越亮。提示:需要调整数值,强度范围为 0-255。

制作一个水平仪

上面的例子只对x方向的角度敏感,如果使用y()值和更多的LED,就可以把pyboard变成水平仪。

xlights = (pyb.LED(2), pyb.LED(3))
ylights = (pyb.LED(1), pyb.LED(4))

accel = pyb.Accel()
SENSITIVITY = 3

while True:
    x = accel.x()
    if x > SENSITIVITY:
        xlights[0].on()
        xlights[1].off()
    elif x < -SENSITIVITY:
        xlights[1].on()
        xlights[0].off()
    else:
        xlights[0].off()
        xlights[1].off()

    y = accel.y()
    if y > SENSITIVITY:
        ylights[0].on()
        ylights[1].off()
    elif y < -SENSITIVITY:
        ylights[1].on()
        ylights[0].off()
    else:
        ylights[0].off()
        ylights[1].off()

    pyb.delay(100)

首先创建x和y方向的LED对象元组,元组是Python中不可变的对象,这意味着它们一旦创建就无法修改。然后,像之前一样继续操作,但针对正x值和负x值打开不同的 LED。然后对y方向执行相同的操作。在pyboard上运行此命令,应该可以看到不同的LED亮起,具体取决于倾斜的方向。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值