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

樹莓派繪制超聲波測距軌跡曲線

2021-12-13 12:49:54牟曉東
電腦報 2021年46期
關鍵詞:設置

牟曉東

在開源硬件編程中,我們都會實時獲取測量生成的實驗數據,比如溫濕度傳感器對環境溫度和濕度進行監測而產生的數據。通常情況下,我們會先將這些實驗數據寫入文件(比如CSV格式文件),然后進行數據整理,再繪制擬合圖像,最終總結得出實驗結論。其實,對于一些非常直觀的測量數據,我們可以“跳”過數據整理,直接將它們“畫”出來,以動態曲線的形式進行展示。以超聲波傳感器的“測距值”為例,我們在樹莓派中分別通過Python代碼編程和古德微“積木”圖形化編程兩種方法,來實現超聲波測距軌跡曲線的動態繪制。

實驗器材包括樹莓派3B+和古德微擴展板各一塊,HC-SR04超聲波傳感器一個,移動電源一個。首先,將超聲波傳感器的四個引腳(VCC、Trig、Echo和GND)對應插入擴展板的20和21號引腳,方向朝外;然后,通過數據線將樹莓派與移動電源連接,通電,啟動操作系統(如圖1)。

一、Python代碼編程繪制超聲波測距軌跡曲線

1.遠程登錄樹莓派,導入待用的庫模塊

運行Windows的“遠程桌面連接”,輸入樹莓派的IP地址(比如192.168.1.116),登錄成功后點擊“編程”-“Thonny Python IDE”菜單,啟動Python編輯器,導入庫模塊:“import numpy as np”、“import matplotlib.pyplot as plt”、“from matplotlib import animation”、“from gpiozero import DistanceSensor”和“import time”(如圖2),其中的numpy、matplotlib.pyplot和animation是負責數據生成和繪制曲線圖像的,gpiozero庫中DistanceSensor類是用來控制超聲波傳感器的。

2.初始化及數據獲取

首先,建立變量sensor,對超聲波傳感器的類進行實例化:“sensor = DistanceSensor(echo=21,trigger=20,max_distance=4)”,注意其中的“echo=21”和“trigger=20”分別對應超聲波傳感器的信號回收與發射引腳號21和20,而“max_distance=4”的作用是設置超聲波傳感器的最大檢測距離為4(單位是“米”),如果不設置,則最大只能測量至1米的極限值(HC-SR04超聲波傳感器可提供2cm-400cm的非接觸式距離感測功能)。

接著,進行圖像繪制前的數據準備,橫坐標x是通過numpy庫中的linspace()來生成,范圍為從0至100:“x = np.linspace(0,100,100)”;縱坐標y先設置為一個“空列表”:“y = []”,建立變量dis,作用是保存超聲波傳感器的“測距”值,初值為0:“dis = 0”;然后建立一個for循環結構(for i in range(100):),其中的第一行語句“dis = round(sensor.distance,2)”作用是為變量dis賦值,通過round()函數來保留兩位小數;第二行語句“print(dis)”是將dis保存的測距值在屏幕上同步輸出顯示;第三行語句“y.append(dis)”作用是將測距值追加至列表y中;第四行語句“time.sleep(0.1)”是控制程序暫停0.1秒鐘,然后進入下一次循環,獲取下一個測距值(如圖3)。

3.繪制“測距值”軌跡動態曲線圖

繪制動態(包括靜態)曲線圖需要創建畫布和子圖:“fig,ax = plt.subplots(dpi=200)”,其中的“dpi=200”是設置顯示分辨率的,可根據情況自行設置;接著,進行曲線的繪制:“line, = ax.plot(x,y,ls='-',lw=1,color='cornflowerblue')”,其中的參數含義分別是橫坐標值x、縱坐標值y、繪制線的類型與寬度,以及線的顏色;然后,自定義建立一個幀畫布的更新函數update(),其中的第一個語句是“line.set_data(x[:i],y[:i])”,作用是將動態檢測生成的每一組數據(橫坐標x值和縱坐標y值)進行“切片”操作后,作為數據源提供給后面的animation.FuncAnimation進行曲線繪制;第二個語句“return line,”是將line值返回。

接著,進行曲線動畫的生成,建立變量ani,調用animation.FuncAnimation()并進行相關參數的設置,其中包括:語句“fig=fig”,作用是設置繪制動態圖的畫布名稱;語句“func=update”,作用是調用自定義動畫函數update(),注意不要帶括號;語句“fargs=(line,)”,作用是除frames之外需要向func傳遞的參數;語句“frames=len(x)”,作用是控制生成的動畫長度(一次循環所包含的幀數目);語句“interval=50”,作用是設置更新的頻率,單位是ms(毫秒);語句“blit=True”,作用是選擇更新所有點還是僅更新產生變化的點;最后,通過語句“plt.show()”將圖像進行顯示(如圖4)。

4.程序的運行測試

將程序保存為“超聲波測距軌跡曲線”后點擊“運行”按鈕,然后控制樹莓派帶動超聲波傳感器轉動,或朝向墻面等障礙物靠近與遠離,大約持續10秒鐘后(程序的循環結構:100×0.1=10),此時,就會在屏幕上看到有超聲波傳感器“測距值”數據不斷出現:0.46、0.49……接著,就會彈出一個名為“Figure 1”的圖片窗口,繪制的正是動態的超聲波測距軌跡曲線,而且會不斷循環播放之前程序所監測獲取的100個數據(如圖5)。

程序可以重復運行,獲取到不同的超聲波測距值,對應不同的動態軌跡曲線。而且,我們還可以修改程序中的循環次數(比如300),或是修改曲線繪制的速度(在變量ani調用animation.FuncAnimation()中“interval=50”處設置),當然也包括曲線的顏色、寬度等,都可以嘗試。

二、圖形化編程繪制超聲波測距軌跡曲線

1.登錄古德微機器人平臺,完成“積木”圖形化編程

訪問古德微機器人網站(http://www.gdwrobot.cn),登錄進入自己賬號后點擊“設備控制”進入“積木”界面。

首先,進行物聯網服務器的設置,從左側“物聯網”-“常用”中將“設置物聯網服務器”功能模塊拖動至主界面,保持其默認的服務器“www.gdwrobot.top”和端口“1883”不變,下方的用戶名和密碼均保持為空;接著,建立一個重復執行100次的循環結構,建立名為“超聲波測距”的變量,為其賦值為“智能硬件”-“常用”中的“超聲波測距”項,并進行保留兩位小數的四舍五入處理;然后通過“輸出調試信息‘超聲波測距”,在LOG調試信息區將超聲波傳感器每次獲取的“測距”值進行顯示輸出;接著,從“物聯網”-“常用”中拖動出“發送主題”功能模塊,并且設置好對應的信息:“向‘luke007發送主題‘distance的數據‘超聲波測距”,其中的“luke007”對應自己的登錄賬號,主題名為“distance”;最后,添加一條“等待0.3秒”的循環間隔時間,點擊“保存”按鈕將程序保存為“繪制超聲波測距軌跡曲線”(如圖6)。

2.設置動態曲線繪制參數

點擊“更多功能”按鈕后再點擊“采集數據”按鈕,進行動態曲線繪制的相關設置:將“采集標題”設置為“繪制超聲波測距軌跡曲線”;第二行的服務器地址和端口號同樣均保持默認不變(與“積木”圖形化編程一致),可嘗試點擊后面的“測試連接”按鈕進行測試,正常的話會出現“連接成功”的提示;第三行的“功能描述”設置為“使用超聲波傳感器進行繪圖”(可自定義),“樹莓派編號”處填寫為“luke007”、“主題”填寫為“distance”,同樣是與圖形化編程一一對應,后面的數值單位設置為“厘米”;最后,點擊“保存”按鈕,將本次的數據采集參數設置項目保存(如圖7)。

3.程序的運行測試

點擊“開始采集”按鈕后再次返回到“積木”區,點擊“連接設備”按鈕再點擊“運行”按鈕,同時再移動樹莓派帶動超聲波傳感器做各種轉向和移動操作;LOG調試顯示區每隔0.3秒鐘就會出現一個“測距值”,同時在“圖表展示”窗口就會出現一個名為“繪制超聲波測距軌跡曲線”在動態變化,描繪的正是超聲波傳感器所測量的與障礙物間的距離值(如圖8)。

程序的升級改進建議:

如果將舵機連接至樹莓派,同時再借助于滑環將超聲波傳感器的連接線與擴展板進行“轉接”;然后在程序中加入控制舵機進行360度旋轉,或是循環“擺頭”式往返旋轉,帶動超聲波傳感器對周圍的障礙物進行“半自動”式掃描,就可以對應生成更為有趣的超聲波測距軌跡曲線動態圖。如果在Python代碼中使用matplotlib.pyplot不是進行折線圖的繪制,而是極坐標圖像,這樣就可以得到類似于影視劇中雷達掃描的實時監控畫面了,大家不妨一試。

猜你喜歡
設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結構及設置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫學專業與??圃O置對比分析及啟示
特殊場景下列控等級轉換的設置方案
7招教你手動設置參數
動車段(所)股道有效長設置研究
我國中小學將設置人工智能相關課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 日韩一级二级三级| 国产精品网曝门免费视频| 91精品视频网站| 播五月综合| 欧美一级夜夜爽www| 欧美色99| 久久国产热| 亚洲av日韩综合一区尤物| 久久免费看片| 国产高潮视频在线观看| 欧美伊人色综合久久天天| 日韩A∨精品日韩精品无码| 国产亚洲精品97在线观看 | 成人中文在线| 91小视频版在线观看www| 亚洲天堂视频在线观看免费| 91精品专区| 国产色婷婷| 视频二区国产精品职场同事| 成年人国产网站| 国产在线日本| 久久香蕉欧美精品| 亚洲三级影院| 国产成人高清亚洲一区久久| 日韩大片免费观看视频播放| 精品国产黑色丝袜高跟鞋| 五月婷婷欧美| 夜精品a一区二区三区| 国产精品网拍在线| 伊人色在线视频| 狠狠综合久久| 欧美亚洲欧美区| 精品久久久久成人码免费动漫 | 天天摸夜夜操| 欧美日韩国产综合视频在线观看 | 乱人伦中文视频在线观看免费| 东京热高清无码精品| 亚洲精品自拍区在线观看| 亚洲综合极品香蕉久久网| av在线人妻熟妇| 欧美 国产 人人视频| 九色免费视频| 谁有在线观看日韩亚洲最新视频| 久久99精品久久久久久不卡| av手机版在线播放| 欧洲精品视频在线观看| 首页亚洲国产丝袜长腿综合| 午夜在线不卡| 欧美成人午夜在线全部免费| 特级精品毛片免费观看| 91视频国产高清| 亚洲国产综合自在线另类| 久综合日韩| 在线观看国产精美视频| 日韩在线影院| 亚洲AV免费一区二区三区| 欧美国产综合色视频| 精品一區二區久久久久久久網站| 国产高清色视频免费看的网址| 四虎成人在线视频| 国产在线拍偷自揄观看视频网站| 国产一区在线视频观看| 青青青视频蜜桃一区二区| 欧美天天干| 精品剧情v国产在线观看| 国产区在线看| 92午夜福利影院一区二区三区| 国产网站免费看| 国产久草视频| 欧洲一区二区三区无码| 久久夜色精品国产嚕嚕亚洲av| 国产丰满大乳无码免费播放| 国产欧美视频在线观看| 毛片免费高清免费| 久草视频精品| 国产综合色在线视频播放线视| 五月丁香伊人啪啪手机免费观看| 国产精品夜夜嗨视频免费视频| 国产成人一二三| 亚洲天堂视频网站| 69av在线| 亚洲一欧洲中文字幕在线|