• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      樹莓派Python編程實現(xiàn)超聲波動態(tài)雷達(dá)圖

      2023-06-21 21:54:11牟曉東
      電腦報 2023年23期
      關(guān)鍵詞:滑環(huán)極坐標(biāo)舵機

      牟曉東

      超聲波傳感器能檢測與前方障礙物間的距離,如果將它固定于360 度旋轉(zhuǎn)的舵機上持續(xù)采樣,就能將采樣獲取的數(shù)據(jù)繪制成雷達(dá)圖進(jìn)行動態(tài)展示。

      1.實驗器材及連接

      樹莓派3B+ 和古德微擴展板各一塊,HC-SR04 超聲波傳感器一個,4 路8 線電滑環(huán)一個,360 度舵機一個,紅色、綠色LED 燈各一支;還需要電烙鐵和熱熔槍各一把。

      用熱熔槍將滑環(huán)中央的轉(zhuǎn)子底端與舵機輸出轉(zhuǎn)子進(jìn)行固定,注意二者的中心點要盡量吻合,防止旋轉(zhuǎn)時偏心。再將滑環(huán)中央轉(zhuǎn)子的頂端與超聲波傳感器頂端固定好,也要中心對齊。接著,將滑環(huán)外圍的定子圈的四根線與古德微擴展板的20 號和21 號(共四個引腳)進(jìn)行連接,紅線接電源正極VCC,黑線接地GND,橙紅色線接Trig 信號發(fā)射端,棕色線接Echo信號回聲端?;h(huán)中央轉(zhuǎn)子4 根引線分別與超聲波傳感器的四個引腳進(jìn)行對應(yīng)連接(電烙鐵點錫);將舵機固定好之后,連接線插入擴展板的18 號引腳,注意黑色、紅色和棕黃色三根線分別與GND、VCC和信號控制D 端連接;然后,將紅色和綠色LED 燈按照“長腿正、短腿負(fù)”的規(guī)則分別插入擴展板的5 號和6 號引腳;最后,給樹莓派插入數(shù)據(jù)線,通電啟動操作系統(tǒng)(如圖1)。

      2.Python代碼編程

      (1)庫模塊的導(dǎo)入與變量初始化

      首先, 導(dǎo)入GPIO Zero 、Matplot Lib等庫模塊: “from gpiozero import LED , Servo , Distance Sensor ”“ importnumpyasnp”“importmatplotlib”"impor tmatplotlib.pyplot as plt”和“importtime”; 然后進(jìn)行LED 燈、舵機和超聲波傳感器實例的初始化操作:“ Red _ LED= LED ( 5 ) ”“ Green_LED=LED(6)”“servo=Servo(18)”和“sensor=DistanceSensor(echo=21,trigger=20,max_distance=4)”, 并且通過語句“servo.mid()”控制360 度舵機以中速帶動超聲波傳感器向一個方向開始旋轉(zhuǎn);再設(shè)置雷達(dá)圖繪制畫布的寬度和高度,大小分別為8 和6(單位為英寸):“plt.figure(figsize=(8,6))”;建立變量ax,賦值為“plt.subplot(111,projection='polar')”, 作用是設(shè)置畫圖樣式為“極坐標(biāo)”模式(Polar);建立變量theta, 賦值為“np.arange(0,2*np.pi,2*np.pi/30)”,通過調(diào)用Numpy 庫中的arange() 函數(shù)返回一個起點為0、終點為2Pi(360 度圓周)的等差數(shù)列,固定步長為2Pi/30;語句“plt.ion()”的作用是將figure 繪圖設(shè)置為交互模式;建立變量data,賦值為空列表“[]”,作用是存放超聲波傳感器每旋轉(zhuǎn)360 度一周掃描后檢測生成的若干個與前方障礙物的間距值。

      (2)“whileTrue:”循環(huán)體

      如果超聲波傳感器檢測的障礙間距值在安全范圍內(nèi)(比如20cm),則控制綠色LED 燈常亮:“Green_LED.on()”;在每次旋轉(zhuǎn)360 度的過程中,需要獲取30 個值與之前產(chǎn)生的等差數(shù)列30 個刻度值對應(yīng):“for i in range(30):”; 建立變量distance,賦值為“round(sensor.distance,4)”, 獲取檢測到的障礙間距數(shù)據(jù)( 保留4位小數(shù)), 并且通過語句“print(i,distance)” 進(jìn)行輸出監(jiān)測; 在“if distance<=0.2:” 分支結(jié)構(gòu)中, 如果條件成立則亮紅色LED 燈、關(guān)閉綠色LED 燈:“Red_LED.on()”“Green_LED.off()”, 持續(xù)時間為0.01 秒鐘:“time.sleep(0.01)”; 然后通過語句“data.append(distance)”, 將數(shù)據(jù)有序追加到data 列表中,再關(guān)閉紅色LED燈、打開綠色LED 燈:“Red_LED.off()”“Green_LED.on()”。

      進(jìn)入下一次循環(huán)(range),30次循環(huán)結(jié)束之后, 開始繪制雷達(dá)圖: 語句“ax.plot(theta,data,'o--',color='g',label='data',linewidth=1)”對極坐標(biāo)進(jìn)行數(shù)據(jù)設(shè)置,包括30 個0 至360 度的等差刻度值、30 個超聲波檢測障礙間距值(data 列表)、線的模式(虛線)、顏色(Green 綠色)和線寬(linewidth)等; 語句“ax.fill(theta,data,facecolor='g',alpha=0.15)” 是對30個障礙間距值與極坐標(biāo)中心點圍成的封閉區(qū)域進(jìn)行設(shè)置,包括填充顏色和透明度等;語句“plt.pause(0.1)”的作用是控制交互式繪圖過程中數(shù)據(jù)更新的預(yù)留時間緩沖,預(yù)防出現(xiàn)圖形不能及時刷新顯示的問題;語句“plt.cla()”的作用是清除當(dāng)前活動軸的數(shù)據(jù)內(nèi)容(相當(dāng)于清空操作),語句“plt.show()”的作用是繪制顯示圖像,語句“data.clear()”的作用是清除data 列表中的當(dāng)前數(shù)據(jù),為下一次循環(huán)保存新數(shù)據(jù)“留空”。

      3.測試超聲波動態(tài)雷達(dá)

      將程序保存為Radar.py, 點擊“ 運行” 按鈕進(jìn)行超聲波動態(tài)雷達(dá)的測試。超聲波傳感器在舵機的帶動下開始勻速旋轉(zhuǎn),程序界面中也不斷有“00.2698”“23 0.3555”等信息出現(xiàn),表示每次旋轉(zhuǎn)一周所監(jiān)測到的30 個障礙間距值;同時,綠色LED 燈亮起,如果出現(xiàn)有近距離的障礙物(在20cm 范圍內(nèi)),則會亮起紅色LED 燈。超聲波傳感器每旋轉(zhuǎn)一周,就會出現(xiàn)一個雷達(dá)極坐標(biāo)圖,繪制有每個點所處的二維空間位置(角度值)和距離中心的半徑大?。ㄕ系K物間距值),同時在這些坐標(biāo)點所包圍生成的封閉區(qū)域內(nèi),雷達(dá)圖是以一定透明度的綠色來展示的。隨著超聲波傳感器的不停旋轉(zhuǎn),同時在其周圍變換出現(xiàn)各種障礙物,整個雷達(dá)圖也在不斷發(fā)生變化(如圖2)。

      關(guān)注“壹零社”公眾號下載源代碼。

      猜你喜歡
      滑環(huán)極坐標(biāo)舵機
      巧用極坐標(biāo)解決圓錐曲線的一類定值問題
      含齒隙彈載舵機的全局反步模糊自適應(yīng)控制
      一種無觸點能量及信號傳輸?shù)幕h(huán)設(shè)計
      電子制作(2019年11期)2019-07-04 00:34:36
      HXn5機車主輔發(fā)電機滑環(huán)安裝工藝研究
      電子世界(2018年22期)2018-12-06 06:17:34
      基于dsPIC單片機的飛艇舵機控制實現(xiàn)
      電子制作(2018年1期)2018-04-04 01:48:14
      極坐標(biāo)視角下的圓錐曲線
      基于高速同步485總線通信的多通道舵機控制器設(shè)計
      不能忽視的極坐標(biāo)
      自冷式滑環(huán)風(fēng)路結(jié)構(gòu)的設(shè)計
      防爆電機(2016年4期)2016-09-15 04:34:11
      基于云模型的舵機同步控制
      来凤县| 台前县| 和硕县| 松桃| 繁峙县| 浑源县| 颍上县| 双鸭山市| 门头沟区| 磴口县| 汕尾市| 涞源县| 临江市| 泗洪县| 东宁县| 本溪市| 乌拉特前旗| 长寿区| 遂昌县| 铁力市| 清河县| 昭苏县| 筠连县| 普定县| 巧家县| 信宜市| 玛曲县| 全州县| 望奎县| 三江| 布拖县| 石首市| 红安县| 浏阳市| 郑州市| 东乌| 威信县| 射阳县| 长武县| 建始县| 宜兰县|