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)。

主站蜘蛛池模板: 91福利免费视频| 日韩欧美视频第一区在线观看| 免费人成在线观看成人片| 一级毛片网| 1024国产在线| 亚洲美女视频一区| 欧美 亚洲 日韩 国产| 精品久久香蕉国产线看观看gif| 免费女人18毛片a级毛片视频| 国产精品对白刺激| 亚洲天堂.com| 精品自窥自偷在线看| 成人福利在线视频免费观看| 国产乱码精品一区二区三区中文| 免费欧美一级| 欧美午夜网| 日韩美女福利视频| 青草视频网站在线观看| 久久99精品久久久大学生| jizz亚洲高清在线观看| 亚洲最大情网站在线观看| 亚洲人在线| 无码中字出轨中文人妻中文中| 亚洲第一页在线观看| 亚洲综合亚洲国产尤物| 无码网站免费观看| 久久黄色影院| 91系列在线观看| 在线日韩一区二区| 亚洲中文精品人人永久免费| 亚洲乱码在线播放| 国内精品手机在线观看视频| 999精品视频在线| 日韩国产无码一区| 欧美福利在线| 久久免费视频播放| 福利在线不卡| 免费无码AV片在线观看国产| 99久久国产综合精品2023| 国产精品一区在线麻豆| 欧美成人手机在线观看网址| 国产日韩丝袜一二三区| 在线观看免费人成视频色快速| 欧美一级高清免费a| 国产日韩精品一区在线不卡 | 日韩精品毛片| 91亚洲影院| 久久99国产精品成人欧美| 精品久久久久久中文字幕女| 91在线国内在线播放老师| 99久久精彩视频| 日本在线免费网站| 亚洲欧美成人在线视频| 女人爽到高潮免费视频大全| 亚洲人成网站18禁动漫无码| 成人亚洲视频| 亚洲成人在线免费观看| 亚洲av综合网| 青草视频在线观看国产| 中文字幕伦视频| 免费观看精品视频999| 成年片色大黄全免费网站久久| 91精品国产无线乱码在线| 免费A∨中文乱码专区| 色屁屁一区二区三区视频国产| 国产成人综合久久精品下载| 免费在线国产一区二区三区精品| 国产精品亚洲精品爽爽| 在线免费观看AV| 日本免费一级视频| 九色在线视频导航91| 欧美97色| 91麻豆精品国产高清在线| 国产精品9| 先锋资源久久| 亚洲AV无码乱码在线观看裸奔 | 国产91无码福利在线| 国产精品视频白浆免费视频| 日韩美一区二区| 米奇精品一区二区三区| 思思热在线视频精品| 毛片一级在线|