2437浏览
查看: 2437|回复: 3

[项目] 上手行空板第一帖,运用板载六轴陀螺仪自制水平仪

[复制链接]
灵感来源拿到行空板的第一件事就是看看这块板具备什么功能,强大的行空板有光线传感器,麦克风,六轴陀螺仪,可触控的电容屏等一个智能手机所具备的大部分传感器,采用主频1.2GHz的cpu运行速度也是杠杠的。当看到陀螺仪的传感器时,我灵光一闪,这个长得像手机的行空板可以还原手机中的水平仪吗,于是这篇帖子出炉了。废话少说,直接进入主题。展示视频

材料清单
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图5
软件环境
采用mind+软件进行编程,Mind+是一款拥有自主知识产权的国产青少年编程软件,集成各种主流主控板及上百种开源硬件,支持人工智能(AI)与物联网(IoT)功能,既可以拖动图形化积木编程,还可以使用Python/C/C++等高级编程语言,让大家轻松体验创造的乐趣。行空板还支持满血python编程,而不是micropython。
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图7
功能介绍

(1)当行空板处于水平面时,屏幕会提示为绿色且位于屏幕中央的文字可以实时显示当前行空板平面的角度。

上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图1
(2).当行空板垂直与水平面时,屏幕会提示为红色。
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图2
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图3                
3)中央的运动圆会随姿态变化
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图4

传感器
ICM-20689追踪物体运
动6轴IMU惯性传感器在同一个硅芯片上配有3轴陀螺仪和3轴加速度计,是市场上性能的传感器,具有的噪音、的温度稳定性和的灵敏度精度。
【实验步骤】
第一步,捉到一块野生的行空板
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图6
第二步,选择编程环境
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图8
第三步,创建一个名为水平仪的文件

上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图9
第四步,就可以开始进行愉快的编程了
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图10
第五步,编程结束,点亮自己的行空板看看效果吧
上手行空板第一帖,运用板载六轴陀螺仪自制水平仪图11
完整程序


#加载库文件
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from unihiker import GUI


def numberMap(x, in_min, in_max, out_min, out_max):
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min


u_gui=GUI()
Board().begin()
背板=u_gui.draw_rect(x=0,y=0,w=240,h=320,width=320,color="#FFFFFF")
#初始化背板颜色
角度=u_gui.draw_text(text="0",x=110,y=140,font_size=16, color="#000000")
#初始化角度
y=u_gui.draw_circle(x=120,y=160,r=45,width=7,color="#FF99FF")
#初始化移动圆位置
while True:
    yShangXian = ((accelerometer.get_y() * -120) + 120)
    #y方向数据处理
    xShangXian = ((accelerometer.get_x() * 160) + 160)
    #x方向数据处理
    JiaoDu = round((numberMap(xShangXian, 0, 314, -90, 90)),)
    #将x方向的角度映射在-90到90区间中
    JiaoDuy = round((numberMap(yShangXian, 3, 237, -90, 90)),)
    #将y方向的角度映射在-90到90区间中
    ZhongHeJiaoDu = (JiaoDu + JiaoDuy)
    ZhongHeJiaoDu = round((numberMap(ZhongHeJiaoDu, -180, 180, -90, 90)),)
    角度.config(text=(str((ZhongHeJiaoDu * 2)) + str((str("度")))))
    y.config(x=yShangXian)
    y.config(y=xShangXian)
    if (((yShangXian > 118) and (yShangXian < 121)) and ((xShangXian > 155) and (xShangXian < 159))):
        背板.config(color="#00FF00")
    elif (((yShangXian > 118) and (yShangXian < 121)) and ((xShangXian > 312) and (xShangXian < 315))):
        背板.config(color="#FF0000")
    elif (((yShangXian > 235) and (yShangXian < 238)) and ((xShangXian > 159) and (xShangXian < 162))):
        背板.config(color="#FF0000")
    elif (((yShangXian > 2) and (yShangXian < 4)) and ((xShangXian > 159) and (xShangXian < 162))):
        背板.config(color="#FF0000")
    else:
        背板.config(color="#FFFFFF")
        #设置垂直和水平背板变色条件
    print((str((str("变量y"))) + str(yShangXian)))
    print((str((str("变量x"))) + str(xShangXian)))

总结
至此行空板自制水平仪的功能已经全部展示完成,水平仪源码放在下方附件,在测试过程中发现行动圆运动时有时会挡住中央的角度数字,好像没有找到类似图层的功能函数,请问还有其他解决办法吗











水平仪1.sb3

165.47 KB, 下载次数: 1200

水平仪源文件

Forgotten  版主

发表于 2022-8-16 18:14:16

很经典的项目
回复

使用道具 举报

小企鹅  初级技匠

发表于 2022-8-23 15:54:20

厉害厉害
回复

使用道具 举报

ASH腻  管理员

发表于 2022-9-30 14:05:03

不错的项目,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail