找回密码
 注册
关于网站域名变更的通知
查看: 701|回复: 1
打印 上一主题 下一主题

MicroPython教程之TPYBoard开发板加速度传感器

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-23 10:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
MicroPython教程之TPYBoard开发板加速度传感器* v1 S" O7 h- N
1、加速度传感器的使用
$ X" x3 t: F( v8 r( J* [    开发板上有一个能够检测角度和运动状态的加速度传感器(小封装小模块?)。X ,Y, Z 轴上各有不同的传感器。通过创建一个 pyb.Accel( ) 对象和调用 x( ) 方法可以获取加速度传感器的数值。萝卜教育tpyboard。com    >>> accel = pyb.Accel()    >>> accel.x()
. U7 k* X8 x4 P& x* j, E9 Y. |, ]
    上述例子返回-30 到 30 之间的带符号的角度值。注意其测量结果不算精准,着意味着即使保持 tpyboard 的完全静止不动依旧会有测量数据出现。因此,x( ) 方法得到的数据不能当成精确值使用,而应视其为一定精度的范围值。萝卜教育tpyboard。com
% ~- S8 L5 u. \3 K    倾斜开发板,通过加速度传感器点亮 LED 灯的 代码如下所示:
6 F: {1 ^" \, d, F
  • 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)( ?- I1 d# w- R5 P2 `
  上述代码中我们创建了 Accel 和 LED 两个对象,然后直接获得加速度传感器在 X 方向上的数值。如果 x 值的大小比定值 SENSITIVITY 大,LED 灯将被点亮,否则将被熄灭。循环中调用了 pyb.delay( ) 函数,否额当 x 的值接近 SENSITIVITY 时LED灯将闪烁得十分频繁。尝试在 tpyboard 开发板上运行该程序,直到左右倾斜开发板使 LED 灯亮或灭。萝卜教育tpyboard。com
5 b& ]8 x7 M* ^" a: V- ^    练习:改变上述脚本使得倾斜的角度越大蓝色的LED灯更加亮。    提示: 你需要重新调整数值,其大小在 0 到 255 之间
; @5 ]+ A  G3 y    2、制作水平仪    上述例程仅只使用了 x 方向上的角度值,然而我们可以通过 y( ) 函数的值和更多的LED灯将 tpyboard 开发板打造成一个水平仪。
" f9 r& n$ ^" x8 m# exlights = (pyb.LED(2), pyb.LED(3))
! X4 u* n4 Z1 S( j7 l3 fylights = (pyb.LED(1), pyb.LED(4))0 M! `& _$ y6 w6 }

  F2 I8 D$ T# n6 r' Jaccel = pyb.Accel()! f( ^& z, w+ F
SENSITIVITY = 3! H& G: Y% a. n' y; u. O. d" _
' _/ [* Q' a6 ]6 D" T3 n
while True:' b- j# }8 ^4 U5 t
    x = accel.x()
. F4 J) e* D6 \& O, n* f, z( }1 d) |    if x > SENSITIVITY:
( I  T' O  L, [' U  M( C1 n2 h        xlights[0].on()
/ T8 @: E6 e8 V! C/ e# m        xlights[1].off()% }" F4 Y7 ?: K/ Y
    elif x < -SENSITIVITY:
4 {# D) Q/ W0 U8 V2 O/ P/ R        xlights[1].on()$ K0 H3 D6 Y- x: g! N0 _) n+ d
        xlights[0].off()1 }6 y8 I/ r8 M9 }1 W
    else:
3 `. t: R; ~* M1 `$ m: v, L3 g        xlights[0].off()6 W" q; T  c" _. s: J- s' A
        xlights[1].off()
! I9 Y; D6 R4 [) K5 G. }3 p% P
    y = accel.y()
6 k; T7 Y" }; G    if y > SENSITIVITY:
; `8 b5 X/ G$ d6 n2 ]. [" `        ylights[0].on()- f2 h- _: `! c) g8 L, Q3 L! E
        ylights[1].off()
: z, g! C! ?5 D    elif y < -SENSITIVITY:
$ M6 M" y3 B0 b' R% O        ylights[1].on()- D/ W; \+ W  J) C3 I
        ylights[0].off()
+ S* I. w6 U% `: C    else:
4 i6 C; E, d. [. n2 n        ylights[0].off()# e. A; k! e3 z3 f2 n
        ylights[1].off()
" \- o4 G1 Y! J6 w6 O* K8 o$ _" D+ a7 a3 |7 v* g
    pyb.delay(100)
- e, r( O& P6 N, C/ f3 r8 x
/ V& x4 M! A' v# u) `0 q5 k# s. T! G一开始我们创建了 一个包含 x 和 y 方向上的 LED 对象的元组。python 语言中元组是不可更改的对象,即意味着一旦创建后就不能被改变。然后我们像上个例程开始的那样,但当 x 的值为正或为负时分别点亮不同的 LED 灯。y 方向上也是同样的原理。这看起来不算很牛 B 但确实实现了水平仪的功能。在你的 tpyboard 板上运行这个程序,现象为向不同方向倾斜开发板点亮不同的 LED 灯。
1 F" s5 H! X9 H/ l, L2 U+ i$ v  f
5 }) R6 t  N& d9 W
' F5 Q0 S7 W/ [( [/ m1 k+ S5 Q8 y# V; q 4 {4 e) h; ^) A" ~

2 @+ B6 m; _7 ^( w9 y0 N 4 C" I. Y, d; S# Q: q/ O5 n! _

/ T+ |+ G( y4 [/ ^% |, @' j( D4 g5 ^8 ?
* N$ {5 P" a: d% z, {2 j
! q  [7 [$ p; ^  F# Q
8 E& D: X) a! \( f, x$ q
4 g7 I" {, W. C/ c* |$ L9 B( H

, \, D# _2 b. Z8 h) K6 K
- `4 }5 Q! T# S9 S

$ ~6 c% T/ F, o6 e1 o( T
& Z% x! j/ {# e5 g, d* @5 P

" Q- c$ J* u1 }4 ^# d+ H* c6 h

! m3 B* o9 }7 Y% ~2 h" _
+ B- Z, F6 `* K3 Y1 [
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 14:10 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表