nykek5i 发表于 2024-8-18 04:24:08

「壹零学院」传感器数据存储与Python作图


    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">在进行开源硬件编程和创客作品<span style="color: black;">研发</span>时,<span style="color: black;">咱们</span>都会先借助<span style="color: black;">各样</span>传感器进行<span style="color: black;">各样</span>数据的即时采集、再<span style="color: black;">按照</span>设定的<span style="color: black;">关联</span>判定<span style="color: black;">要求</span>去<span style="color: black;">掌控</span>LED灯等外设做出响应。</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;"><span style="color: black;">针对</span>传感器在<span style="color: black;">每一个</span>瞬间所“<span style="color: black;">捕捉</span>”的数据,程序<span style="color: black;">一般</span>都是“用完便弃”的一次性处理,<span style="color: black;">倘若</span>后期对数据想要进行整理和图象绘制等二次<span style="color: black;">运用</span>的话,就<span style="color: black;">必要</span>将传感器在实验过程中所采集的数据以文件形式存储,从而达到将实验数据图形化“再现”的目的——尤其是多个<span style="color: black;">区别</span>传感器<span style="color: black;">同期</span>快速采集数据的<span style="color: black;">状况</span>。</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">以<span style="color: black;">平常</span>的掌控板“声光双控灯”项目为例,<span style="color: black;">怎样</span><span style="color: black;">同期</span>对声音传感器、光线传感器的数据采集进行同步存储和Python作图呢?</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">图形化编程实现传感器数据存储</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">1.进行图形化编程</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">在mPython X中<span style="color: black;">经过</span>图形化编程实现传感器数据存储。<span style="color: black;">首要</span>,初始化掌控板的OLED<span style="color: black;">表示</span>屏进行提示信息的<span style="color: black;">表示</span>——清除第2行和第3行的信息、在对应坐标位置<span style="color: black;">表示</span>“按A键采集数据”和“按B键结束”、OLED<span style="color: black;">表示</span>生效;</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">接着,编写“当按键A被按下…执行…”主函数,先是初始化两个文本文件sound.txt和light.txt,分别对应声音传感器和光线传感器采集数据的<span style="color: black;">目的</span>存储文件;再进入一个“<span style="color: black;">始终</span>重复…执行…”循环结构,将两个传感器的“声音值”和“光线值”分别赋值给对应的两个变量:“测试声音值”和“测试光线值”,接着再调用“采集并存储”函数;</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">接下来,进入一个判断“按键B<span style="color: black;">是不是</span><span style="color: black;">已然</span>按下”的<span style="color: black;">选取</span>结构,<span style="color: black;">倘若</span><span style="color: black;">要求</span>成立的话,则先调用“读取并输出”函数、再执行“中断循环”模块跳出该层循环;为了<span style="color: black;">掌控</span>两个传感器采集数据的时间间隔,<span style="color: black;">必须</span>在循环结构中加入“等待1秒”模块语句。</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">自定义的“采集并存储”函数<span style="color: black;">包含</span>:先将变量测试声音值和测试光线值由数值型转为文本再分别写入sound.txt和light.txt两个文本文件,<span style="color: black;">重视</span>设置为以回车来分隔相邻的两个数据;</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">接着,将这些数据附加提示信息后进行<span style="color: black;">表示</span>输出;“读取并输出”函数先打印输出“数据采集结束”的提示信息,<span style="color: black;">而后</span>定义sound_list和light_list两个列表,<span style="color: black;">经过</span>“读取文本文件为列表”模块语句进行赋值,实现从对应的文本文件中读取<span style="color: black;">已然</span>存储过的传感器数据(<span style="color: black;">重视</span><span style="color: black;">一样</span><span style="color: black;">亦</span>要设置为对应的“以回车分隔”);最后,将所有的声音数据和光线数据<span style="color: black;">表示</span>输出(如图1)。</span></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/1b3c7dab133a41488a398081d50cb8c4~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1723899338&amp;x-signature=kDhibi%2BagRdLCCHz7S%2FGM5Saaj0%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">2.运行程序,测试传感器的数据采集与存储</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">将掌控板<span style="color: black;">经过</span>数据线连接至电脑的USB接口,正常的话会在窗口上方有“掌控板”、“COM4”等提示信息。程序<span style="color: black;">保留</span>后点击“刷入运行”按钮,当右下角有“刷入成功”提示信息后,在掌控板的OLED<span style="color: black;">表示</span>屏上会<span style="color: black;">显现</span>两行提示信息“按A键采集数据、按B键结束”;接着,轻触一下掌控板的A键,提示窗口就会每隔1秒钟<span style="color: black;">显现</span>一行类似于“声音值为:0,光线值为1063”的信息,此时可尝试敲击桌子或对着掌控板哼唱几句歌曲,<span style="color: black;">同期</span>还<span style="color: black;">能够</span>用手捂住光线传感器或<span style="color: black;">运用</span>手机的“手电筒”进行照射;采集<span style="color: black;">周边</span>的声音数据和光线数据一段时间后,轻触一下掌控板的B键,程序则会停止数据的采集(输出“数据采集结束”),并且将采集的声音数据和光线数据以列表形式输出(如图2)。</span></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/037003116e90425ca77f4ae5ef1ea3ab~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1723899338&amp;x-signature=wjFFyynC4NBw42sQVmY3s1Y95Lg%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">3.从掌控板的SD卡中下载两个文本文件至电脑本地</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">点击mPython X顶端的“文件管理”按钮,弹出“板载文件管理”窗口,找到其中的sound.txt和light.txt文本文件,分别选中后再点击“下载到电脑”按钮,从掌控板的SD卡将它们下载至电脑本地(<span style="color: black;">例如</span>D盘根目录中);再<span style="color: black;">运用</span>记事本程序分别打开进行查看,其中所存储的数据正是之前声音传感器和光线传感器每隔一秒钟所采集到的几十个数据,<span style="color: black;">每一个</span>数据占据一行(如图3)。</span></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/91aa93db2f764d7e916a04b1434e18bd~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1723899338&amp;x-signature=qwivC2QlwFy9OSK06aIrj%2Fo%2FoJo%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;"><span style="color: black;">2、</span>在Python中实现<span style="color: black;">都数</span>据图象的同步绘制</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">在Spyder编辑器中进行Python代码编程。</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;"><span style="color: black;">首要</span>,进行matplotlib和numpy库模块的导入:“import matplotlib.pyplot as plt”、“import numpy as np”;接着,设置图象坐标轴能够正常<span style="color: black;">表示</span>中文(<span style="color: black;">例如</span>仿宋)和“负数”数据:“plt.rcParams = ”、“plt.rcParams = False”;<span style="color: black;">而后</span>,从sound.txt和light.txt两个文本文件中分别读取之前两个传感器所采集到的41个数据,其中的“x = np.linspace(0,40,41)”是用来构建图象的横坐标数据,<span style="color: black;">表率</span>每隔1秒钟进行一次数据采集;分别初始化y_sound和y_light两个空列表后, <span style="color: black;">运用</span>“with open”<span style="color: black;">办法</span>以只读方式打开对应的文本文件后,<span style="color: black;">经过</span>range()循环以append()列表数据追加的<span style="color: black;">办法</span>将<span style="color: black;">每一个</span>数据添加到列表中,<span style="color: black;">重视</span>还要<span style="color: black;">运用</span>eval()<span style="color: black;">办法</span>将<span style="color: black;">每一个</span>原始的文本数据转换为int整型数据;最后,进行图象的坐标轴、标题、图例和网格等的设置,并且调用plt.plot()进行图象的同步绘制,再将生成的图象以png<span style="color: black;">照片</span>文件形式进行<span style="color: black;">保留</span>:“plt.savefig(传感器采集数据.png,dpi=200)”。</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">将程序<span style="color: black;">保留</span>为“Python绘制传感器的采集数据.py”,按F5功能键运行测试,在右侧的<span style="color: black;">掌控</span>台中就会<span style="color: black;">表示</span>有预览图象的输出结果;<span style="color: black;">同期</span>,在D盘中<span style="color: black;">亦</span>生<span style="color: black;">成为了</span>“传感器采集数据.png”文件(如图4),实现了将两个传感器采集的实时数据先以文本文件的形式存储后、再<span style="color: black;">经过</span>Python代码编程绘制图象展示的目的,<span style="color: black;">大众</span>不妨一试。</span></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/7de4006ccbd847d19f757e0b0b4432ce~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1723899338&amp;x-signature=VJfqMxRcahX1ocEDwJ%2FKFLMS%2BC0%3D" style="width: 50%; margin-bottom: 20px;"></div>




vixf 发表于 2024-8-28 17:06:23

楼主听话,多发外链好处多,快到碗里来!外链论坛 http://www.fok120.com/

星☆雨 发表于 2024-8-30 08:01:55

“板凳”(第三个回帖的人)‌

星☆雨 发表于 2024-9-6 06:51:15

外链发布社区 http://www.fok120.com/

流星的美 发表于 2024-9-8 22:11:39

在遇到你之前,我对人世间是否有真正的圣人是怀疑的。

nykek5i 发表于 2024-10-12 17:51:39

论坛外链网http://www.fok120.com/

qzmjef 发表于 2024-10-24 05:26:50

“沙发”(SF,第一个回帖的人)‌

4zhvml8 发表于 2024-11-13 08:44:55

感谢你的精彩评论,为我的思绪打开了新的窗口。
页: [1]
查看完整版本: 「壹零学院」传感器数据存储与Python作图