Funpack第九期-使用SensorTile.box四个面实现四个不同的功能
介绍用本板卡最终实现了什么功能
使用SensorTile.box 立方体较大的四个面,实现四个不同的功能,如:
· 面1,测量桌面倾斜程度;
· 面2,测量温度;
· 面3,测量气压;
· 面4,测量湿度;
转一周触发的依次是测量桌面倾角,温度,气压,湿度,触发时才显示数据,未触发默认显示为0。
各功能对应的主要代码片段及解释
本次任务采用ST公司的ALgoBuilderSuite软件实现。
在开始之前需要检查中的工具链是否配置齐全,如图所示。我的编译工具选择的是KEIL。
同时需要在此处选择对应的开发板:
这样就可以开始实现啦。
本次任务笔者主要用到的功能模块如图所示,均从[Sensor Hub]中接出。
其中标红的加速度模块是实现切换功能的核心。
整体的结构框图如图所示:
1. 判断
以下判断的数据均来自从Acceleration中Demux出来的三轴数据。
面1由于需要测量倾角,条件不能太苛刻,所以Z轴加速度>0.7即可判断生效。
面2、3、4的判断设置了两个阈值,即对应轴的加速度<-0.7或者>0.7且其它轴加速度的绝对值都<0.2才判断翻转到对应面。
2. 输出
用于判断的Acceleration单独输出一个图。
面1测量倾角时,输出了四元数的图、Sensor Fusion和Tilt Sensing测量的倾角(俯仰、滚翻、重力倾角),以便直观和精确的给出倾角信息,虽然好像不太准的样子,有漂移。
同时在数据输出时,用Demux、Buffer、Mux逻辑实现了未触发默认输出为0的模块,如图所示。
测倾角部分的逻辑如下:
与面1类似,面2、3、4也采用相同的逻辑进行实现,同时也用Demux、Buffer、Mux逻辑实现了未触发默认输出为0的模块,如图所示。
至此,整个任务一就完成啦。
输出情况
精确数据显示桌面倾斜程度(俯仰、滚翻、重力倾角)+ 可视化Sensor Fusion
采用Sensor Fusion和Tilt Sensing输出,一个直观,一个精确
面2,测量温度;
只输出温度
面3,测量气压;
只输出气压
面4,测量湿度;
只输出湿度
对本活动的心得体会(包括意见或建议)
体验到图形化编程的快感,要是写代码不知道得写到猴年马月踩多少坑,哈哈哈完成任务的过程还是蛮愉快的!