点击上方“蘑菇云创造”可以关注我们哦
Mind+ 1.70版本推出了期待已久的Python模式,不用再单独安装配置python环境,直接使用mind+软件就可以体验所有python功能。
而且python模式下,代码模式内提供库管理功能,一键加载常用库。
Mind+ Python模式使用教程大家可以到官方教程中查看:
https://mindplus.dfrobot.com.cn/Python
已经看到有大佬在用mind+玩pinpong库了,用Mind+玩转PinPong库:https://mc.dfrobot.com.cn/thread-308207-1-1.html ,看了这个帖子,突发奇想python有许多好用的数据处理库,我们可以利用这些工具,结合pinpong库,将硬件传感器数据导出或形成图表,进行数据分析或者是实时监测数据。
下面我们来试试做一个可视化温度实时监测窗口。
项目分析
实现温度实时监测窗口,首先我们需要用到pinpong库,来控制硬件获取温度值;而将获取到的温度数值转为折线图,网上查了一下可以使用matplotlib库,matplotlib 是 Python 最常用的可视化工具,他可以被用来生成直方图、折线图、散点图等数据图表,非常强大,刚好符合我们想要的折线图效果。
准备工作
1.打开mind+,从软件右上角切到Python模式,并且新建"temperature.py"文件。
2.选择“库管理”,加载安装pinpong库以及matplotlib库。
程序分析
首先先确定一下需要实现的效果:
● 通过UNO主控板获取LM35温度传感器温度值
● 将采集到的温度值,记录形成折线图
● 要实现实时监测,数据呈现的折线图需要为滚动动图,且横轴坐标应为时间戳
获取温度值,这里使用UNO主控和LM35温度传感器,将LM35温度传感器接到UNO板A0接口,如下图:
程序部分使用pinpong库,获取A0口的模拟值:
数据处理
接着我们需要使用matplotlib库来处理数据,其中使用pyplot和animation两个方法,pyplot函数集类似于MATLAB,可以帮助我们绘图,animation可以实现动图效果,实现数据的实时更新。
前面我们提到,需要数据的实时更新,折线图的X轴坐标以时间戳的形式呈现,所以这里我们还需要加入datetime,用于调用时间值。
导入各个库之后,创建画布,并且修改画布样式,这里我们创建两个列表,对应折线图的x和y轴坐标值。
想要实现动图效果,这里我们使用FuncAnimation方法,首先我们先来了解一下FuncAnimation()函数:
FuncAnimation(fig,func,frames,init_func,interval,blit)
● fig:表示绘制动图的画布名称
● func:表示自定义动画函数
● frames:表示动画长度,一次循环包含的帧数,在函数运行时,其值会传递给动画函数
● init_func:表示自定义开始帧,即动画函数的初始化函数
● interval:表示更新频率,ms计
● blit:表示选择更新所有点,还是仅更新产生变化的点。基本选择位True
大概知道了这个函数的用法,前面我们已经定义了画图fig,并且给予了配置样式,同时创建了两个列表对应折线图的横纵轴坐标,那么我们还需要定义一个动画函数。
在动画函数中,我们需要确定x和y轴的数值,y轴在这里是我们需要的温度值,通过公式转化后,添加到ys列表中:ys.append(temp_c)
x轴使用时间值,调用datetime,以时间戳的形式添加进xs列表中:xs.append(dt.datetime.now().strftime('%H:%M:%S'))
在得到x和y轴数据后,调用plot绘制图形:ax.plot(xs, ys)
函数最后,我们还需要设置一下图像的格式,设置图标标题及坐标名称等。
动画函数完成后,调用FuncAnimation,填入画布名称及动画函数等等参数后,使用plt.show()绘制画布。
完整代码如下
完成效果如下
其中修改了图表样式,效果更好看
蘑菇云创造
微信号 : mgystem
扫码关注,了解更多
推荐阅读:
点击“阅读原文”,了解更多!

