国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

掌控板:Python編程實現(xiàn)水火情警報器

2023-03-28 08:50:15牟曉東
電腦報 2023年11期
關(guān)鍵詞:水情火情顯示屏

牟曉東

PinPong庫是一個可用于連接硬件設備進行編程的Python庫模塊,在開源硬件編程中可適用于Arduino、虛谷號、micro:bit、掌控板、樹莓派等常見的開發(fā)板。只須在Python編程環(huán)境中對初始化語句中的參數(shù)進行修改即可。比如在ArduinoUNO中的初始化語句是“Board("uno").begin()”,若換成掌控板則修改為“Board("handpy").begin()”。只要所使用的傳感器連接正確的話,Python編程代碼幾乎不必做改動就能夠在各種開發(fā)板之間進行“無縫”跨平臺移植,實現(xiàn)相同的功能。下面以掌控板為例,連接上雨水傳感器和火焰?zhèn)鞲衅?,通過Mind+環(huán)境中的Python編程調(diào)用PinPong庫來制作一個水火情警報器。

1.實驗器材及連接

實驗器材包括:掌控板和擴展板各一塊,F(xiàn)C-37雨水傳感器一個,火焰?zhèn)鞲衅饕粋€,各種杜邦線若干。首先,將掌控板正確插入至擴展板中,注意二者的金手指面要緊密接觸好;接著,將雨水傳感器的VCC、GND和AO(模擬數(shù)據(jù)輸出端)分別通過紅色、白色和綠色杜邦線連接至擴展板的P0引腳組的+、-和P端,注意不是連接DO(數(shù)字信號輸出端);類似的連接方式,再將火焰?zhèn)鞲衅鞯腣CC、GND和DO分別通過紅色、白色和黃色杜邦線連接至擴展板的P1引腳組的+、-和P端;最后,通過數(shù)據(jù)線將掌控板與電腦的USB口進行連接(如圖1)。

2.在Mind+中進行Python編程

運行Mind+,切換至“代碼”、“Python模式”,再點擊右上角的“庫管理”項查看是否之前已經(jīng)安裝過PinPong庫,確?!坝布刂啤眳^(qū)域中的“pinpong”項后面按鈕顯示為“已安裝”。

開始在左側(cè)的代碼主編輯區(qū)進行編程。

首先,進行相關(guān)庫模塊的導入,包括導入時間庫:“importtime”、導入PinPong庫中的開發(fā)板及引腳類:“frompinpong.boardimportBoard,Pin”、導入掌控板擴展設備:“frompinpong.extension.handpyimport*”。接著,初始化掌控板:“Board("handpy").begin()”,再對P0和P1兩個引腳分別進行電平輸入的模擬數(shù)據(jù)和數(shù)字數(shù)據(jù)的初始化設置:“P0_pin=Pin(Pin.P0,Pin.ANALOG)”、“P1_pin=Pin(Pin.P1,Pin.IN)”(如圖2)。

接下來進行函數(shù)的自定義,包括控制掌控板正面三顆LED燈的亮與滅、OLED顯示屏分別進行“水情預警!”和“火情預警!”文字提示共兩組(四個)函數(shù)。

第一組控制LED燈的亮與滅函數(shù)分別是lights_on()和lights_off(),每個函數(shù)均是通過設置RGB值來控制三顆LED燈的發(fā)光顏色,其中的rgb[0]、rgb[1]和rgb[2]則分別對應LED燈的序號,在lights_on()函數(shù)中通過“rgb[0]=(255,0,0)”、“rgb[1]=(0,255,0)”和“rgb[2]=(0,0,255)”三行語句分別設置三顆LED燈的發(fā)光顏色為紅色、綠色和藍色(其中的數(shù)字255若改為127則表示對應顏色的發(fā)光強度降低為50%);而在lights_off()函數(shù)中,三顆LED的RGB值均設置為0,表示不發(fā)光(即熄滅狀態(tài));最后,再通過“rgb.write()”語句使其生效(如圖3)。

第二組控制OLED顯示屏提示“水情預警!”的water_alert()函數(shù)和“火情預警!”fire_alert()函數(shù)代碼類似,以water_alert()函數(shù)為例,先通過語句“oled.DispChar('水情預警!',32,16)”來設置文字提示信息的內(nèi)容顯示及坐標,再通過語句“oled.show()”使OLED顯示屏生效,并且添加時間等待語句“time.sleep(3)”,作用是控制文字信息的顯示提示時間為3秒鐘;接下來,語句“oled.fill(0)”的作用是將低電平輸出至OLED屏,滿屏均為黑色,最終也仍需添加語句“oled.show()”使顯示生效(如圖4)。

最后編寫“whileTrue”循環(huán)主程序:建立變量water_value,為其賦值為“P0_pin.read_analog()”,作用是讀取雨水傳感器所獲取的檢測數(shù)據(jù)(AO模擬端);建立變量fire_value,賦值為“P1_pin.value()”,作用是讀取火焰?zhèn)鞲衅魉@取的檢測數(shù)據(jù)(D1數(shù)字端);再通過兩個print()語句將檢測的數(shù)據(jù)信息在電腦屏幕上顯示輸出:“print("水信號的檢測(模擬)數(shù)據(jù)為:",water_value)”、“print("火信號的檢測(數(shù)字)數(shù)據(jù)為:",fire_value)”;建立第一個if條件分支結(jié)構(gòu),其判斷為“water_value<1000”,因為通過測試發(fā)現(xiàn)雨水傳感器的檢測板在“無水”時的輸出值為1040左右,而“有水”時的輸出值為960左右;若該條件成立,說明檢測到“有水”,則分別執(zhí)行亮燈函數(shù)lights_on()、水情預警函數(shù)water_alert()和滅燈函數(shù)lights_off();第二個if條件分支結(jié)構(gòu)類似,只是判斷條件修改為“fire_value==0”,因為通過測試發(fā)現(xiàn)火焰?zhèn)鞲衅髟凇盁o火”時的輸出值為1(“有火”則為0),條件成立則執(zhí)行亮燈函數(shù)lights_on()、火情預警函數(shù)fire_alert()和滅燈函數(shù)lights_off();最后,為循環(huán)結(jié)構(gòu)添加0.3秒鐘的時間等待語句“time.sleep(0.3)”(如圖5)。

3.測試水火情警報器

將程序保存,點擊右上角的“運行”進行測試:在“無水”、“無火”的正常情況下,掌控板的LED燈不發(fā)光,OLED屏也不顯示任何信息,電腦程序下方的“終端”處每隔0.3秒會顯示一組水與火信號的檢測數(shù)據(jù);當在雨水傳感器的檢測板上滴幾滴水時,三顆LED燈發(fā)光,同時在顯示屏上出現(xiàn)“水情預警!”的提示,直至將水滴擦除才會解除燈光和文字警報;當在火焰?zhèn)鞲衅鞲浇c燃打火機時,LED燈發(fā)光,顯示屏提示“火情預警!”,直至熄滅打火機才會解除警報。

猜你喜歡
水情火情顯示屏
火情偵察工作中存在的問題與應對策略
一塊布就是一個顯示屏?
軍事文摘(2022年10期)2022-06-15 02:29:30
一種面向森林火情監(jiān)測的四旋翼無人機系統(tǒng)
成功處理沙漠火情
人民調(diào)解撲滅“緊急火情”
蒼蠅迷戀顯示屏
甜水情
未來五年LED顯示屏出貨將保持16%增長
中國照明(2016年6期)2016-06-15 20:30:14
2011年遼寧省汛期水情分析
基于AT89S52的手勢可控LED滾動顯示屏設計
石城县| 资溪县| 化德县| 海伦市| 博罗县| 遵化市| 石河子市| 轮台县| 治多县| 临颍县| 青海省| 黎川县| 韶山市| 克山县| 綦江县| 浪卡子县| 南康市| 肥城市| 璧山县| 镇原县| 黄平县| 仪陇县| 随州市| 奉新县| 东源县| 当涂县| 塘沽区| 裕民县| 宿松县| 红原县| 扶余县| 紫云| 日照市| 滦平县| 越西县| 灯塔市| 紫阳县| 高邮市| 西华县| 淮南市| 枞阳县|