【一起玩MicroPython】04 利用加速度计实现手势控制LED灯

johnrey   2016-6-3 15:23 楼主
本次eeworld版没有加速度传感器,不过F4DISCO有啊,那咱就偷懒用DISCO吧,哈哈。F4DISCO上自带的是ST的LIS302DL,用SPI连接(当然也可以选择使用I2C方式),原理图如下:其中PE3选择接口模式(同时也是SPI的片选,注,并未使用硬件PA5_NSS脚),PA5-PA7分别是SCK,MISO和MOSI,也就是板上的SPI1,最高支持10M的通信速度。另有两个中断脚接到了PE0和PE1。
4e16e2dc-b6d9-45c0-9b5a-ededcd904c34.png
芯片的xyz轴如下图所示,是一个右手螺旋,所以在板上,STlink就是x+,音频输出就是x-;user sw是y+,reset sw是y-;而我们的地球呢,是z-。可是测试结果并不支持以上结论,正好全部相反。横着放,右倾,x是负的,左倾,x是正的。U,y是负的,D,y是正的。
e45b485e-20fb-49d9-a3ad-56f0bd997bb2.png
现在要做的事情呢,就是根据倾斜的方向,点亮对应的LED,后期就可以更换为其他应用需要的动作了。用的是F4DISCO的板子,上面的LED分布是:
1:red,down;2:green,up,3:orange,R,4:blue,L
然后用下面代码测试了一下,就是往哪边倾转,哪边的LED灯亮。还是能正常工作的。选了一个阈值0.3,工作还行,就是可能有抖动。代码是必须有缩进的,不知道为什么贴上来就没有了。。。
  1. from staccel import STAccel
  2. ac=STAccel()
  3. while (True):
  4.         if ac.x()<-0.3 :        #R
  5.                 pyb.LED(3).on()
  6.         elif ac.x()>0.3 :        #L
  7.                 pyb.LED(4).on()
  8.         else :
  9.                 pyb.LED(3).off()
  10.                 pyb.LED(4).off()
  11.         print(ac.x())
  12.         if ac.y()<-0.3 :        #U
  13.                 pyb.LED(2).on()
  14.         elif ac.y()>0.3 :        #D
  15.                 pyb.LED(1).on()
  16.         else :
  17.                 pyb.LED(1).off()
  18.                 pyb.LED(2).off()
  19.         print(ac.y())
  20.         pyb.delay(100)



回复评论 (6)

1 来自 7楼 okhxyyo 

汇总帖在此
【一起玩MicroPython】—by johnrey
https://bbs.eeworld.com.cn/forum. ... 9205&fromuid=536508

玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2016-6-17 10:48
MicroPython 是在ST的板子上跑一个Python的解释器?
点赞  2016-6-3 15:35
引用: woody_chen 发表于 2016-6-3 15:35
MicroPython 是在ST的板子上跑一个Python的解释器?

是的,挺好玩的,就是我对python还不熟,玩的比较low
点赞  2016-6-3 15:42
把staccel 也分享出来吧。
点赞  2016-6-3 15:56
引用: dcexpert 发表于 2016-6-3 15:56
把staccel 也分享出来吧。

压缩包里面翻出来的,hoho。不过贴上来吧,因为那个路径好像挺深的,懒得去翻了
staccel.py (3.23 KB)
(下载次数: 9, 2016-6-3 16:12 上传)

点赞  2016-6-3 16:12
谢谢分享学习一下
点赞  2016-6-3 22:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复