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

開啟Arduino的Python編程之旅

2022-11-25 19:02:55
電腦報 2022年44期

在上期的“開啟Arduino的Python編程之旅——基礎篇”中,我們在Arduino中通過調用PinPong庫使用Python編程,分別實現了“數字輸出:閃爍的LED燈”“數字輸入:按鈕控制LED燈亮與滅”“模擬輸入:打印輸出滑桿傳感器的位置數據”和“模擬輸出:PWM模式控制LED燈的明暗程度均勻變化”四個開源硬件編程項目案例;在本期的“常規篇”中,我們嘗試在Arduino上連接溫濕度傳感器、光線傳感器、超聲波傳感器和WS2812燈帶等外設,同樣是調用PinPong庫進行Python編程,制作實現四個不同效果的經典項目案例。

首先,將DHT11溫濕度傳感器的VCC和GND引腳分別通過紅色、黑色杜邦線連接至ArduinoUNO的3.3V和GND引腳,再將DAT引腳通過黃色杜邦線連接至Arduino的6號引腳(如圖1)。

打開PythonIDE進入編輯界面開始編程,仍需要先導入庫模塊及相關的類:“import time”“from pinpong.board import Board,Pin,DHT11”,如果使用的是DHT22溫濕度傳感器,此處需更改為“from pinpong.board import Board,Pin,DHT22”;初始化ArduinoUNO:“Board(“uno”).begin()”,再建立變量dht11,賦值為“DHT11(Pin(Pin.D6))”——若為DHT22則同樣作類似的修改,比如連接引腳使用7號,對應的命名均為“DHT22”,即“DHT22(Pin(Pin.D7))”;接下來,在“while True”循環結構中建立變量my_temp和my_humi,分別賦值為“dht11.temp_c()”和“dht11.humidity()”,作用是讀取對應的攝氏溫度值和濕度值;然后,通過“print(“現在的室溫是:”,my_temp,“℃,濕度為:”,my_humi)”語句將溫度值和濕度值進行打印輸出;最后,添加時間等待語句“time.sleep(3)”,作用是控制每次循環讀取及顯示溫度和濕度的持續時間為3秒(如圖2)。

將程序保存為“【01】讀取并顯示即時室溫及濕度.py”,再將Arduino通過數據線與電腦連接,運行程序進行測試。屏幕上開始出現第一條顯示輸出:“現在的室溫是:22.1℃,濕度為:70.0”,此時嘗試使用打火機模擬火源在一定范圍內靠近DHT11溫濕度傳感器(或者用手掌握住),靜置一段時間,屏幕上每隔5秒鐘就會顯示一行提示信息,溫度值和濕度值均有不同程度的變化,比如溫度值會從最初的22.1 ℃升高至26.7 ℃(如圖3)。

從Arduino上拆下DHT11溫濕度傳感器,換用光線傳感器來實現根據周圍環境的光線強度來控制LED燈發光。首先將光線傳感器的VCC和GND端通過紅色和黑色杜邦線連接至Arduino的3.3V和GND接地端,再將模擬信號輸出AO端通過黃色杜邦線連接至Arduino的A0引腳;然后,將一支紅色LED燈的長、短引腳分別插入Arduino的13號及相鄰的GND端(如圖4)。

先導入庫模塊及相關的類并進行Arduino主板的初始化:“import time”“from pinpong.board import Board,Pin”“Board(“uno”).begin()”;然后建立my_LED和my_adc兩個變量,分別賦值為“Pin(Pin.D13,Pin.OUT)”和“Pin(Pin.A0,Pin.ANALOG)”,作用分別是將連接在13號引腳的LED燈設置為數字輸出、將連接在A0引腳的光線傳感器設置為模擬輸入;接下來,在“while True”循環結構中建立變量my_light,賦值為“my_adc.read_analog()”,作用是從A0引腳讀取模擬數據,即光線傳感器檢測到的周圍環境光線值;通過“print(“現在檢測到的光線值是:”,my_light)”語句將光線數據在屏幕上打印輸出后,再通過“if (my_light>=400)”對my_light的值進行是否“大于等于400”的判斷,條件成立的話,說明周圍環境的光線比較暗,則分別執行“print(“LED燈工作中…”)”和“my_LED.value(1)”,控制LED燈發光;條件不成立,則熄滅LED燈:“my_LED.value(0)”;最后,添加時間等待語句“time.sleep(0.5)”,控制每次循環讀取光線傳感器數據的持續時間為0.5秒鐘(如圖5)。

將程序保存為“【02】根據光線強度控制LED燈是否發光.py”,運行程序進行測試,屏幕上每隔0.5秒鐘顯示輸出一個檢測到的光線值:122、141、67……此時對應的是白天正常的照明情況;嘗試用一只黑盒子蓋住光線傳感器的光敏電阻,檢測到的光線數據就變成528、557、555……LED燈也開始亮起來,同時屏幕上也有“LED燈工作中…”的提示;如果再撤掉蓋住光線傳感器模擬黑暗環境的黑盒子,檢測到的光線值就會重新恢復為較小的數值,LED燈也熄滅(如圖6)。

保持LED燈插接在13號引腳不變,將光線傳感器拆下,開始安裝SR04超聲波傳感器(也可以使用精度更高的URM超聲波傳感器):先分別通過紅色和黑色杜邦線將超聲波傳感器的VCC和GND端連接至Arduino的5V和GND接地端(如果接3.3V端有可能工作不正常),再通過黃色和綠色杜邦線將超聲波傳感器的Trig信號發射端、Echo信號接收端連接至Arduino的7號和8號引腳(如圖7)。

先導入庫模塊及相關的類并進行Arduino主板的初始化:“import time”“from pinpong.board import Board,Pin,SR04_URM10”“Board(“uno”).begin()”;然后建立變量my_LED,仍賦值為“my_LED = Pin(Pin.D13,Pin.OUT)”;再建立TRIGER_PIN和ECHO_PIN兩個變量,分別賦值為“Pin(Pin.D7)”和“Pin(Pin.D8)”,作用是設置超聲波傳感器的信號發射端和接收端的引腳分別為7號和8號;建立變量sonar,賦值為“SR04_URM10(TRIGER_PIN,ECHO_PIN)”,作用是初始化SR04超聲波傳感器(將對應的引腳編號作為參數傳遞進去);接下來,在“while True”循環結構中建立變量my_dis,賦值為“sonar.distance_cm()”,作用是獲取超聲波傳感器的檢測距離值(單位為厘米);再通過“print(‘距離前方障礙物的間距為:{0:.2f} cm’.format(my_dis))”語句,將數據在屏幕上打印輸出;然后通過“if (my_dis<=10)”對間距值進行“是否小于等于10”的判斷,條件成立的話,則先在屏幕打印輸出“注意安全,間距已不足10cm!”的警告信息,再控制LED燈發光:“my_LED.value(1)”;條件不成立,則關閉LED燈:“my_LED.value(0)”;最后,仍然是為循環結構添加0.1秒鐘的時間等待語句“time.sleep(0.1)”(如圖8)。

將程序保存為“【03】超聲波測距和LED燈光報警.py”,運行程序進行測試:超聲波傳感器每隔0.1秒鐘就會檢測獲取一個與前方障礙物的間距值:35.00cm、14.00cm、11.00cm……當放置的模擬障礙物距離足夠近時,屏幕輸出的提示信息變為:“距離前方障礙物的間距為:9.00cm”“注意安全,間距已不足10cm!”此時的LED燈也會發光進行報警;直至移走障礙物,LED燈熄滅,又會恢復正常的監控狀態(如圖9)。

將超聲波傳感器和LED燈從Arduino上拆下,開始安裝WS2812燈帶:通過紅色和白色杜邦線將燈帶的+5V和GND端分別連接至Arduino的5V和GND接地端,再將燈帶的DO端通過綠色杜邦線連接至Arduino的9號引腳(如圖10)。

先導入庫模塊及相關的類:“import time”“from pinpong.board import Board,Pin,NeoPixel”(其中的NeoPixel類對應WS2812燈帶),再從random隨機庫中導入隨機取整函數randint:“from random import randint”;接著,進行Arduino主板的初始化:“Board(“uno”).begin()”;建立變量NEOPIXEL_PIN,賦值為“Pin(Pin.D9)”,即燈帶的信號引腳是與Arduino的9號引腳相連;再建立變量PIXELS_NUM,賦值為60,對應標準WS2812燈帶的60個燈珠,每個燈珠均相當于一顆RGB微型LED燈;再建立變量my_np,賦值為“NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)”,將燈帶的引腳號和燈珠數量作為參數傳遞進去;在“while True”循環結構中建立for內層循環,對編號為0-59共60個燈珠進行隨機顏色的“賦值”;my_red、my_green和my_blue三個變量的值均被賦為“randint(0,255)”(從0至255中隨機取整),再通過“my_np[i] = (my_red,my_green,my_blue)”語句,實現為每個燈珠設置紅色、綠色和藍色三種隨機顏色的目的;最后,添加0.001秒鐘的時間等待語句:“time.sleep(0.001)”,控制相鄰兩個燈珠每次進行顏色切換的時間差(如圖11)。

將程序保存為“【04】隨機顏色炫彩燈帶.py”,運行程序進行測試:燈帶很快就從第0顆燈珠開始亮起,接著就會快速亮起第1顆、第2顆……每顆燈珠亮起顯示的均為隨機顏色;第一次循環(內層嵌套的for循環)結束后,第二次循環立刻運行,將上一次循環所設置的隨機顏色“覆蓋”并重新亮起一種新的隨機顏色,這樣我們就得到了隨機顏色炫彩燈帶(如圖12)。

主站蜘蛛池模板: 国产第八页| 日韩欧美综合在线制服| 亚洲第一极品精品无码| 国产十八禁在线观看免费| 久久99国产视频| 久久综合九色综合97婷婷| 波多野结衣亚洲一区| 亚洲国产午夜精华无码福利| 国产 日韩 欧美 第二页| 日韩在线网址| 亚洲国产精品日韩av专区| 欧美国产日韩另类| 欧美成人第一页| 国产免费看久久久| 国产一区二区精品高清在线观看| 国产成人综合久久| 久久久久亚洲AV成人人电影软件| 亚洲国产精品美女| 亚洲Aⅴ无码专区在线观看q| 欧美特黄一级大黄录像| 国产精品55夜色66夜色| 青青网在线国产| 精品中文字幕一区在线| 国产精品亚洲欧美日韩久久| 伊人久综合| 亚洲日本www| 免费国产高清视频| 巨熟乳波霸若妻中文观看免费| 色综合久久综合网| 欧美亚洲网| 潮喷在线无码白浆| 专干老肥熟女视频网站| 婷婷午夜天| 国产精品免费久久久久影院无码| 91精品免费高清在线| 真人免费一级毛片一区二区 | 亚洲天堂2014| 超碰精品无码一区二区| 欧美激情网址| 好吊色妇女免费视频免费| 99在线国产| 国产成人免费观看在线视频| 91色国产在线| 99在线视频精品| 午夜成人在线视频| 伊人婷婷色香五月综合缴缴情| 蜜桃视频一区二区三区| 亚洲三级视频在线观看| 国产成人三级| 免费一级全黄少妇性色生活片| 99热这里只有免费国产精品| 色欲色欲久久综合网| 日韩黄色大片免费看| 亚洲精品另类| 在线观看精品国产入口| 欧美国产成人在线| 又猛又黄又爽无遮挡的视频网站| 亚洲九九视频| 91精品专区| 亚洲欧美一区二区三区图片| 免费无码AV片在线观看国产| 国产性爱网站| 在线亚洲精品自拍| 国产无人区一区二区三区| 欧美一区二区自偷自拍视频| 中文字幕在线一区二区在线| 亚洲国产天堂久久综合226114| 色哟哟色院91精品网站| 久久久噜噜噜久久中文字幕色伊伊| 日韩色图在线观看| 91久久偷偷做嫩草影院精品| 亚洲欧洲日产国产无码AV| 四虎精品国产AV二区| 欧美亚洲欧美区| 亚洲欧美综合在线观看| 亚洲精品视频免费看| 久久国产拍爱| 黄色网址手机国内免费在线观看| 色精品视频| 香港一级毛片免费看| 亚洲欧美一级一级a| 久久免费精品琪琪|