999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

傳感器數據存儲與Python作圖

2022-02-15 01:03:25牟曉東
電腦報 2022年5期

牟曉東

在進行開源硬件編程和創客作品開發時,我們都會先借助各種傳感器進行各種數據的即時采集,再根據設定的相關判定條件去控制LED燈等外設做出響應。對于傳感器在每個瞬間所“捕獲”的數據,程序通常都是“用完便棄”的一次性處理,如果后期對數據想要進行整理和圖像繪制等二次使用的話,就必須將傳感器在實驗過程中所采集的數據以文件形式存儲,從而達到將實驗數據圖形化“再現”的目的——尤其是多個不同傳感器同時快速采集數據的情況。以常見的掌控板“聲光雙控燈”項目為例,如何同時對聲音傳感器、光線傳感器的數據采集進行同步存儲和Python作圖呢?

在mPython X中通過圖形化編程實現傳感器數據存儲。首先,初始化掌控板的OLED顯示屏進行提示信息的顯示——清除第2行和第3行的信息、在對應坐標位置顯示“按A鍵采集數據”和“按B鍵結束”、OLED顯示生效;接著,編寫“當按鍵A被按下…執行…”主函數,先是初始化兩個文本文件sound.txt和light.txt,分別對應聲音傳感器和光線傳感器采集數據的目標存儲文件;再進入一個“一直重復…執行…”循環結構,將兩個傳感器的“聲音值”和“光線值”分別賦值給對應的兩個變量:“測試聲音值”和“測試光線值”,接著再調用“采集并存儲”函數;接下來,進入一個判斷“按鍵B是否已經按下”的選擇結構,如果條件成立的話,則先調用“讀取并輸出”函數,再執行“中斷循環”模塊跳出該層循環;為了控制兩個傳感器采集數據的時間間隔,需要在循環結構中加入“等待1秒”模塊語句。

自定義的“采集并存儲”函數包括:先將變量測試聲音值和測試光線值由數值型轉為文本再分別寫入sound.txt和light.txt兩個文本文件,注意設置為以回車來分隔相鄰的兩個數據;接著,將這些數據附加提示信息后進行顯示輸出;“讀取并輸出”函數先打印輸出“數據采集結束”的提示信息,然后定義sound_list和light_list兩個列表,通過“讀取文本文件為列表”模塊語句進行賦值,實現從對應的文本文件中讀取已經存儲過的傳感器數據(注意同樣也要設置為對應的“以回車分隔”);最后,將所有的聲音數據和光線數據顯示輸出(如圖1)。

將掌控板通過數據線連接至電腦的USB接口,正常的話會在窗口上方有“掌控板”、“COM4”等提示信息。程序保存后點擊“刷入運行”按鈕,當右下角有“刷入成功”提示信息后,在掌控板的OLED顯示屏上會出現兩行提示信息“按A鍵采集數據、按B鍵結束”;接著,輕觸一下掌控板的A鍵,提示窗口就會每隔1秒鐘出現一行類似于“聲音值為0,光線值為1063”的信息,此時可嘗試敲擊桌子或對著掌控板哼唱幾句歌曲,同時還可以用手捂住光線傳感器或使用手機的“手電筒”進行照射;采集周圍的聲音數據和光線數據一段時間后,輕觸一下掌控板的B鍵,程序則會停止數據的采集(輸出“數據采集結束”),并且將采集的聲音數據和光線數據以列表形式輸出(如圖2)。

點擊mPython X頂端的“文件管理”按鈕,彈出“板載文件管理”窗口,找到其中的sound.txt和light.txt文本文件,分別選中后再點擊“下載到電腦”按鈕,從掌控板的SD卡將它們下載至電腦本地(比如D盤根目錄中);再使用記事本程序分別打開進行查看,其中所存儲的數據正是之前聲音傳感器和光線傳感器每隔一秒鐘所采集到的幾十個數據,每個數據占據一行(如圖3)。

在Spyder編輯器中進行Python代碼編程。

首先,進行matplotlib和numpy庫模塊的導入:“import matplotlib.pyplot as plt”、“import numpy as np”;接著,設置圖像坐標軸能夠正常顯示中文(比如仿宋)和“負數”數據:“plt.rcParams['font.sans-serif'] = ['FangSong']”、“plt.rcParams['axes.unicode_minus'] = False”;然后,從sound.txt和light.txt兩個文本文件中分別讀取之前兩個傳感器所采集到的41個數據,其中的“x = np.linspace(0,40,41)”是用來構建圖像的橫坐標數據,代表每隔1秒鐘進行一次數據采集;分別初始化y_sound和y_light兩個空列表后,使用“with open”方法以只讀方式打開對應的文本文件后,通過range()循環以append()列表數據追加的方法將每個數據添加到列表中,注意還要使用eval()方法將每個原始的文本數據轉換為int整型數據;最后,進行圖像的坐標軸、標題、圖例和網格等的設置,并且調用plt.plot()進行圖像的同步繪制,再將生成的圖像以png圖片文件形式進行保存:“plt.savefig(‘傳感器采集數據.png’,dpi=200)”。

將程序保存為“Python繪制傳感器的采集數據.py”,按F5功能鍵運行測試,在右側的控制臺中就會顯示有預覽圖像的輸出結果;同時,在D盤中也生成了“傳感器采集數據.png”文件(如圖4),實現了將兩個傳感器采集的實時數據先以文本文件的形式存儲后、再通過Python代碼編程繪制圖像展示的目的,大家不妨一試。

主站蜘蛛池模板: 国产小视频免费| 日韩a在线观看免费观看| 亚洲成AV人手机在线观看网站| 国产福利一区视频| 国产第一色| 久久国产V一级毛多内射| 日韩经典精品无码一区二区| 不卡视频国产| 国产成+人+综合+亚洲欧美| 亚洲AV无码久久天堂| 为你提供最新久久精品久久综合| 免费jizz在线播放| 中文字幕无码中文字幕有码在线 | 日本91在线| 狠狠色婷婷丁香综合久久韩国| 久久精品一卡日本电影| 日韩福利在线观看| 亚洲久悠悠色悠在线播放| 国产精品美女免费视频大全| 五月婷婷丁香综合| 亚洲乱码视频| 欧美.成人.综合在线| 亚洲日韩久久综合中文字幕| 午夜性刺激在线观看免费| 国外欧美一区另类中文字幕| 精品少妇人妻无码久久| 在线观看亚洲精品福利片| 亚洲成A人V欧美综合天堂| 久久91精品牛牛| 精品国产免费观看| 精品福利视频导航| 91成人免费观看| 亚洲无码在线午夜电影| 老熟妇喷水一区二区三区| 亚洲一区二区无码视频| 国产91av在线| 任我操在线视频| 无码不卡的中文字幕视频| 精品成人免费自拍视频| 这里只有精品在线播放| 精品伊人久久久久7777人| 热久久综合这里只有精品电影| julia中文字幕久久亚洲| 呦系列视频一区二区三区| 亚洲一区波多野结衣二区三区| 国产精品大尺度尺度视频| 青青网在线国产| 99re精彩视频| 国产在线观看成人91 | 国产香蕉97碰碰视频VA碰碰看| 国产精品久久久久鬼色| 国产精品永久久久久| 91无码人妻精品一区二区蜜桃| 国产精品亚洲天堂| 亚洲欧美成人综合| 亚洲中文无码h在线观看| 露脸一二三区国语对白| 国产福利影院在线观看| 男女性色大片免费网站| 91小视频在线观看| 亚洲一区第一页| 亚洲区一区| 91娇喘视频| 亚洲国产成人精品无码区性色| 一级一毛片a级毛片| aa级毛片毛片免费观看久| 国产JIZzJIzz视频全部免费| 亚洲不卡无码av中文字幕| 国产日本欧美在线观看| 婷婷五月在线| 日韩在线永久免费播放| 国产激情第一页| 国产精品视频观看裸模| 久久精品中文字幕少妇| 992tv国产人成在线观看| 伊人婷婷色香五月综合缴缴情| 波多野结衣一区二区三区88| 国产精品一线天| 日韩午夜片| 国产天天射| 国产视频入口| 国产极品美女在线播放 |