雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • 最佳新人
  • E币:1802

MicroPython动手做(20)——掌控板之三轴加速度

2020-4-27 11:22:41 显示全部楼层
0 (1).jpg


掌控板载
三轴加速度计MSA300,测量范围:±2G

最新评论

楼层直达:

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802
雕爷学编程 2020-4-27 12:07:18 显示全部楼层
本帖最后由 雕爷学编程 于 2020-4-27 12:10 编辑

0-0.jpg

0--.jpg

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802
雕爷学编程 2020-4-27 12:25:33 显示全部楼层
01.jpg

1、掌控板加速度传感器
能够测量由于重力引起的加速度,传感器在加速过程中,通过对质量块所受惯性力的测量,利用牛顿第二定律获得加速度值。掌控板上的加速度计可测量加速度,测量范围为 -2g 到 +2g 之间。

掌控板的测量沿3个轴,每个轴的测量值是正数或负数,正轴越趋近重力加速度方向,其数值往正数方向增加,反之往负数方向减小,当读数为 0 时,表示沿着该特定轴“水平”放置。

X - 向前和向后倾斜。
Y - 向左和向右倾斜。
Z - 上下翻转。

广告

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802
雕爷学编程 2020-4-27 13:16:22 显示全部楼层
  1. #MicroPython动手做(20)——掌控板之三轴加速度
  2. #简单测试3个轴加速度值的变化

  3. from mpython import *
  4. while True:
  5.     oled.fill(0)
  6.     x1 = accelerometer.get_x()
  7.     y1 = accelerometer.get_y()
  8.     z1 = accelerometer.get_z()
  9.     oled.DispChar('加速度 x', 3, 11, 1)
  10.     oled.DispChar((str(x1)), 52, 11, 1)
  11.     oled.DispChar('加速度 y', 3, 22, 1)
  12.     oled.DispChar((str(y1)), 52, 22, 1)
  13.     oled.DispChar('加速度 z', 3, 33, 1)
  14.     oled.DispChar((str(z1)), 52, 33, 1)
  15.     oled.show()


使用前,导入mpython模块:

from mpython import *




获取X、Y、Z三轴的加速度:

x1 = accelerometer.get_x()

y1 = accelerometer.get_y()

z1 = accelerometer.get_z()




注解

通过 accelerometer.get_x() 获取3轴加速度。获取3轴加速度获取方法分别为 get_x() 、get_y() 、get_z() 。 每个轴的测量值根据方向是正数或负数,表示以克为单位的值。




可以尝试掌控板按以下放置,观察3轴数据:

平放桌面 --(0,0,-1)

翻转平放桌面 --(0,0,1)

掌控板下板边直立与桌面 --(1,0,0)

掌控板左板边直立与桌面 --(0,1,0)




注解

发现什么规律没有?当重力加速度与加速度轴方向一致时,即等于1g的地球重力加速度。正方向为+1g,反方向为-1g。 假如猛烈地摇动掌控板,就会看到加速度达到±2g,那是因为这个加速度计的最大测量值为±2g。


雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802
雕爷学编程 2020-4-27 14:20:45 显示全部楼层
3、使用柱状条演示不同状态下的三轴加速度值

  1. #MicroPython动手做(20)——掌控板之三轴加速度
  2. #使用柱状条演示不同状态下的三轴加速度值

  3. from mpython import *

  4. myUI = UI(oled)
  5. while True:
  6.     oled.fill(0)
  7.     x1 = ((100 - 0) / (1 - (-1))) * (accelerometer.get_x() - (-1)) + 0
  8.     oled.DispChar('加速度 X', 2, 11, 1)
  9.     myUI.stripBar(50, 13, 75, 10, x1, 1, 1)
  10.     y1 = ((100 - 0) / (1 - (-1))) * (accelerometer.get_y() - (-1)) + 0
  11.     oled.DispChar('加速度 Y', 2, 22, 1)
  12.     myUI.stripBar(50, 26, 75, 10, y1, 1, 1)
  13.     z1 = ((100 - 0) / (1 - (-1))) * (accelerometer.get_z() - (-1)) + 0
  14.     oled.DispChar('加速度 Z', 2, 33, 1)
  15.     myUI.stripBar(50, 39, 75, 10, z1, 1, 1)
  16.     oled.show()


广告

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802
雕爷学编程 2020-4-30 15:07:46 显示全部楼层
4、用加速度制作一个上下左右各滚动的水平球(小点)
描述:OLED屏幕是128*64像素,OLED屏长为X轴,宽为Y轴。可以画一个圆,半径为31像素,让“点”不会超出这个范围,确定点的位置用加速度X、Y轴。小球不超出中心小圆圈为大致处于水平位置。

加速度Y轴倾斜的值是范围1至-1,向左倾斜往1增大,向右倾斜往-1增大。通过映射把Y轴加速度的取值范围变为32至92,可以让Y轴加速度的值在OLED屏幕的中心点显示位置。

加速度X轴倾斜的值是范围-1至1,向前倾斜往-1增大,向后倾斜往1增大。通过映射把Y轴加速度的取值范围变为2至62。可以让X轴加速度的值在OLED屏幕的中心点显示位置。

映射的值有小数点,OLED屏幕是无法识别小数点的,需要将映射后的值以整型输出。

  1. #MicroPython动手做(20)——掌控板之三轴加速度
  2. #用加速度制作一个上下左右各滚动的水平球(小点)

  3. from mpython import *
  4. while True:
  5.     oled.fill(0)
  6.     oled.circle(64, 32, 2, 1)
  7.     oled.circle(64, 32, 31, 1)
  8.     oled.pixel((int(((92 - 32) / ((-1) - 1)) * (accelerometer.get_y() - 1) + 32)), (int(((62 - 2) / (1 - (-1))) * (accelerometer.get_x() - (-1)) + 2)), 1)
  9.     oled.show()




雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802
广告

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802

雕爷学编程

  • 24 主题
  • 685 帖子
  • 1848 积分
  • 身份:LV4 高级技术员
  • E币:1802
雕爷学编程 2020-4-30 18:11:02 显示全部楼层
5、三轴绿灯水平测量仪


  1. #MicroPython动手做(20)——掌控板之三轴加速度
  2. #三轴绿灯水平测量仪

  3. from mpython import *    #导入mpython模块

  4. Center_x=63           #设定中心点(原点)x的坐标
  5. Center_y=31           #设定中心点(原点)y的坐标

  6. while True:
  7.    
  8.     x=accelerometer.get_x()         #获取X轴的加速度
  9.     y=accelerometer.get_y()         #获取Y轴的加速度

  10.     if y<=1 and y>=-1:
  11.         offsetX=int(numberMap(y,1,-1,-64,64))   #映射Y轴偏移值
  12.     if x<=1 and x>=-1:
  13.         offsetY=int(numberMap(x,1,-1,32,-32))   #映射X轴偏移值
  14.     move_x=Center_x+offsetX                 #水平球在X坐标上的移动
  15.     move_y=Center_y+offsetY                 #水平球在Y坐标上的移动

  16.     oled.circle(Center_x,Center_y,8,1)      #画中心固定圆:空心
  17.     oled.fill_circle(move_x,move_y,6,1)     #画移动的水平球:实心
  18.     oled.DispChar("%0.1f,%0.1f" %(x,y),75,0)    #显示水平球在X、Y轴的加速度值

  19.     if offsetX==0 and offsetY==0:
  20.         rgb.fill((0,20,0))          #水平球在中心位置亮绿灯,亮度为20
  21.         rgb.write()
  22.     else:
  23.         rgb.fill((0,0,0))           #水平球不在中心位置灭灯
  24.         rgb.write()
  25.     oled.show()
  26.     oled.fill(0)


1234下一页
我要评论
54
128
广告
关闭 热点推荐上一条 /3 下一条
快速回复 返回列表