亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        開啟Arduino的Python之旅

        2023-01-10 01:22:26牟曉東牟奕炫
        電腦報(bào) 2023年1期
        關(guān)鍵詞:按鈕

        牟曉東 牟奕炫

        借助PinPong庫(kù),我們用Python編程能控制其“顯示”輸出——向我們展示各種數(shù)據(jù)信息,包括從傳感器獲取的數(shù)字或模擬數(shù)據(jù)、程序運(yùn)行的結(jié)果數(shù)據(jù)以及根據(jù)所設(shè)定的條件進(jìn)行文字提醒等等。以常見的OLED顯示屏、四位數(shù)碼管以及1602LCD液晶顯示屏為例,在Arduino 中進(jìn)行Python編程,分別進(jìn)行煙霧監(jiān)測(cè)數(shù)據(jù)的顯示與提醒、雙按鈕半自動(dòng)比賽計(jì)分顯示和聲光數(shù)據(jù)的同步顯示三個(gè)創(chuàng)客實(shí)驗(yàn)項(xiàng)目測(cè)試。

        1.OLED12864屏

        用Arduino UNO一塊,小型面包板一塊,OLED12864顯示屏一塊,MQ-2煙霧傳感器一個(gè),杜邦線若干,打火機(jī)一個(gè),實(shí)現(xiàn)顯示煙霧傳感數(shù)據(jù)及提示。

        將OLED顯示屏和煙霧傳感器的四個(gè)引腳插入面包板;用橙色和白色杜邦線分別將Arduino 的5V 和GND與面包板的紅色和藍(lán)色側(cè)邊電源連接,再用兩對(duì)橙色和白色杜邦線分別將OLED 顯示屏和煙霧傳感器的VCC、GND連接至面包板的側(cè)邊電源;用黃色杜邦線將煙霧傳感器的AO模擬數(shù)據(jù)輸出端與Arduino的A0模擬端連接;用紅色和綠色杜邦線將OLED顯示屏的SCL、SDA端與Arduino 的SCL、SDA引腳連接;最后,通過數(shù)據(jù)線將Arduino與電腦的USB端口連接(如圖1)。

        在電腦端進(jìn)入Python IDE編輯界面開始編程:

        導(dǎo)入相關(guān)的庫(kù)模塊:“importtime”“from pinpong.board importBoard,Pin,ADC”“from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C”; 接著, 初始化Arduino 板:“Board("uno").begin()”, 再初始化OLED 顯示屏:“oled=SSD1306_I2C(width=128, height=64)”, 屏幕的像素點(diǎn)數(shù)為橫向128、縱向64;建立變量Smoke Sensor,為其賦值為“ADC(Pin(Pin.A0))”, 作用是設(shè)置煙霧傳感器通過Arduino 的A0端進(jìn)行模擬輸入。

        在“while True”循環(huán)主體部分,先建立變量SmokeSensor_Value,賦值為“SmokeSensor.read()”, 作用是讀取A0 模擬端的數(shù)據(jù),再通過print()語(yǔ)句在電腦屏幕端將該數(shù)據(jù)輸出:“print("Smokevalue:", SmokeSensor_Value)”;接著,通過oled.text("Smoke value:",8,8)”和“ oled.text (Smoke Sensor_Value,60,23)”語(yǔ)句,作用是在OLED顯示屏對(duì)應(yīng)的坐標(biāo)位置點(diǎn)顯示輸出文字提示及變量SmokeSensor_Value 的值,后面的語(yǔ)句“oled.show()”作用是將顯示內(nèi)容生效;然后建立一個(gè)if 條件分支結(jié)構(gòu),判斷條件是“SmokeSensor_Value>=100”,因?yàn)榻?jīng)測(cè)試后發(fā)現(xiàn),正常情況下MQ-2煙霧傳感器在Arduino的A0端輸出數(shù)據(jù)均在100以內(nèi),當(dāng)打火機(jī)燃?xì)膺M(jìn)入其檢測(cè)范圍時(shí),該數(shù)據(jù)會(huì)增加;當(dāng)該條件成立時(shí),表示檢測(cè)到有危險(xiǎn)氣體泄漏,則控制OLED顯示屏先顯示“Alert?。。 本拘畔⒉⒊掷m(xù)3 秒鐘,再將該警示信息“擦除”,擦除方法是用若干個(gè)空格覆蓋之前的提示,注意別忘了顯示生效語(yǔ)句;最后,為整個(gè)循環(huán)結(jié)構(gòu)添加一個(gè)0.5秒的等待(如圖2)。

        將程序保存為“OLED 屏顯示煙霧數(shù)據(jù)及警示提醒.py”,按F5 功能鍵運(yùn)行程序進(jìn)行測(cè)試:正常情況下,OLED 顯示屏顯示“Smoke value:” 和“37” 兩行信息,并且每隔0.5 秒鐘就會(huì)刷新顯示一個(gè)近似范圍的數(shù)據(jù);當(dāng)嘗試用打火機(jī)靠近煙霧傳感器并釋放可燃?xì)怏w時(shí),很快就會(huì)在OLED 顯示屏上出現(xiàn)有“Alert?。?!”的警示信息,中間的數(shù)據(jù)也顯示為219、182 之類的較大數(shù)據(jù);直至移走打火機(jī)后,煙霧傳感器監(jiān)測(cè)到的數(shù)據(jù)又會(huì)恢復(fù)至37、35、33,OLED顯示屏上的“Alert!??!” 警示信息也隨之消失。同時(shí),在整個(gè)測(cè)試過程中,電腦屏幕上也會(huì)同步顯示“Smokevalue:219”等提示信息(如圖3)。

        2.四位數(shù)碼管

        用Arduino UNO 一塊,小型面包板一塊,四位數(shù)碼管一個(gè),綠色和白色按鈕各一個(gè),杜邦線若干,實(shí)現(xiàn)雙按鈕半自動(dòng)計(jì)分器。

        在上個(gè)OLED 顯示屏實(shí)驗(yàn)的基礎(chǔ)上,先拆除OLED顯示屏、煙霧傳感器和一部分杜邦線,保持Arduino 與面包板間的電源及接地連通;接著,將四位數(shù)碼管插入之前OLED顯示屏的位置,用橙、白杜邦線將VCC和GND端與面包板的側(cè)邊紅色電源、藍(lán)色接地相連,數(shù)碼管的SCL 和SDA端分別通過紅、藍(lán)杜邦線與Arduino的SCL、SDA 引腳連接;然后,在數(shù)碼管的左右兩側(cè)分別插入綠色和白色按鈕,兩個(gè)按鈕的VCC和GND端均通過一對(duì)橙色和白色杜邦線連接至面包板的側(cè)邊紅色電源、藍(lán)色接地;綠色按鈕的OUT 信號(hào)連接至Arduino 的7 號(hào)引腳,白色按鈕的OUT 信號(hào)輸出端連接至Arduino 的8號(hào)引腳(如圖4)。

        導(dǎo)入“time”“Board,Pin”“TM1650”庫(kù); 初始化Arduino 板, 初始化四位數(shù)碼管; 建立變量CurrentScore, 賦值為“"00.00"”, 類型為字符串型數(shù)據(jù),再將變量CurrentScore 存儲(chǔ)的字符串顯示在數(shù)碼管上,長(zhǎng)度為五位的字符串中間的小數(shù)點(diǎn)會(huì)對(duì)應(yīng)點(diǎn)亮數(shù)碼管中間的冒號(hào)(:); 建立變量ButtonGreen 和ButtonWhite,分別賦值為“Pin(Pin.D7,Pin.IN)”和“Pin(Pin.D8, Pin.IN)”,作用是初始化連接在7 號(hào)和8 號(hào)引腳的綠色與白色按鈕,設(shè)置為信號(hào)輸入端。

        在“while True” 循環(huán)主體部分, 建立變量ButtonGreen_value 和ButtonWhite_value 并賦值, 作用是讀取對(duì)應(yīng)引腳的電平數(shù)據(jù),按鈕未按下時(shí)為0, 按下則會(huì)觸發(fā)產(chǎn)生1;接著,建立if 條件選擇結(jié)構(gòu), 當(dāng)電平為1 時(shí)判斷按鈕被按下。條件成立則將變量CurrentScore 的值顯示在數(shù)碼管上。建立變量LeftTwo 和RightTwo并賦值。對(duì)應(yīng)從變量CurrentScore 所存儲(chǔ)的五位長(zhǎng)度字符串?dāng)?shù)據(jù)的首尾兩端截取前兩位和后兩位,注意先截取出的兩位數(shù)據(jù)CurrentScore[:2] 和CurrentScore[-2:]均為字符串,需先使用int()函數(shù)轉(zhuǎn)換為整數(shù)再與按鈕的狀態(tài)值(ButtonGreen_value 或ButtonWhite_value)進(jìn)行算術(shù)加法運(yùn)算,再使用str()函數(shù)將結(jié)果重新轉(zhuǎn)換成字符串型數(shù)據(jù);接下來,對(duì)于新的計(jì)算結(jié)果LeftTwo 和RightTwo 要分別進(jìn)行“長(zhǎng)度是否為1”的if 條件判斷,條件成立,說明對(duì)應(yīng)的比分是十以內(nèi)的個(gè)位數(shù),要在其左側(cè)進(jìn)行字符串“補(bǔ)0”;接著,重新構(gòu)建生成變量CurrentScore的值,包括左側(cè)兩位字符(LeftTwo)、中間的小數(shù)點(diǎn)字符('.') 和右側(cè)的兩位字符(RightTwo):“LeftTwo + '.'+ RightTwo”; 最后, 通過語(yǔ)句“tm.display_string(CurrentScore)”, 將新的比分?jǐn)?shù)據(jù)顯示在數(shù)碼管上,為整個(gè)循環(huán)添加0.2 秒等待(如圖5)。

        保存并運(yùn)行測(cè)試:四位數(shù)碼管應(yīng)顯示比分為00:00,按一次綠色、按兩次白色按鈕,比分應(yīng)變?yōu)?1:02,然后還需測(cè)試十位數(shù)控制顯示是否正常(如圖6)。

        3.1602LCD

        用Arduino UNO一塊,小型面包板一塊,1602LCD液晶顯示屏一塊,聲音傳感器和光線傳感器各一支,紅色LED 燈一支,杜邦線若干,實(shí)現(xiàn)聲音與光線數(shù)據(jù)的同步顯示。

        將聲音傳感器和光線傳感器各自的VCC、GND與Arduino的5V和GND相連,將二者的AO 模擬輸出引腳連接至Arduino的A0和A1模擬輸入引腳;1602LCD的VCC 和GND引腳連接面包板的紅色和藍(lán)色電源,將SCL和SDA引腳與Arduino的SCL和SDA引腳相連;在Arduino 的13 號(hào)引腳處插入紅色LED燈的正極(長(zhǎng)),負(fù)極(短)插入相鄰的GND引腳(如圖7)。

        導(dǎo)入庫(kù);初始化Arduino 板;設(shè)置13號(hào)引腳的紅色LED燈為數(shù)字信號(hào)輸出端,建立變量SoundSensor 和LightSensor并賦值, 將A0和A1模擬引腳的聲音和光線傳感器設(shè)置為模擬輸入方式;對(duì)1602LCD液晶顯示屏初始化,I2C 地址為0x27、打開顯示背光,清屏。

        在循環(huán)主體部分, 建立變量SoundSensor_Value并賦值, 用來讀取聲音傳感器的模擬數(shù)據(jù);在第一組語(yǔ)句中,先設(shè)置LCD的光標(biāo)位置為第一行第0個(gè)字符處,顯示字符串“Sound:”;再設(shè)置LCD的光標(biāo)位置為(6,0),顯示變量SoundSensor_Value的值;類似地,第二組語(yǔ)句是對(duì)光線傳感器所監(jiān)測(cè)的模擬數(shù)據(jù)進(jìn)行讀取和顯示,注意LCD 光標(biāo)要變?yōu)椋?,1)和(6,1)對(duì)應(yīng)第二行;接著,建立if 分支結(jié)構(gòu),如果聲音值大于24且光線值大于100(聲音傳感器和光線傳感器監(jiān)測(cè)的數(shù)據(jù)越大,表示環(huán)境光線越暗、聲音強(qiáng)度越大),則控制LED 燈發(fā)光并持續(xù)10 秒鐘;為循環(huán)添加0.5 秒等待,最后關(guān)閉LED 燈(如圖8)。

        保存并運(yùn)行測(cè)試:LCD液晶顯示屏應(yīng)顯示兩行實(shí)時(shí)信息, 如“Sound:24Light:84”。嘗試鼓掌改變聲音數(shù)值,蓋住光敏電阻改變光線值,看是否達(dá)成有聲音光線又暗這兩個(gè)條件時(shí),LED 燈發(fā)光并持續(xù)10秒的目標(biāo)。測(cè)試任一條件不成立時(shí)LED燈熄滅。

        如果只有背景光,看不到信息,可試著用螺絲刀調(diào)節(jié)顯示屏背面的藍(lán)色對(duì)比度調(diào)節(jié)旋鈕。

        猜你喜歡
        按鈕
        哪個(gè)是門鈴真正的按鈕
        當(dāng)你面前有個(gè)按鈕
        門鈴按鈕
        電動(dòng)牙刷電源按鈕注射模設(shè)計(jì)
        模具制造(2019年7期)2019-09-25 07:30:00
        死循環(huán)
        十二星座面對(duì)按鈕的反應(yīng)
        知識(shí)窗(2015年9期)2015-05-14 09:08:21
        內(nèi)心不能碰的按鈕
        青于藍(lán)~高考語(yǔ)文核按鈕系列出版書目
        沒Gmail按鈕 咱自己加等
        全新黑洞與天才按鈕
        看世界(2004年9期)2004-04-29 00:00:00
        国产三级在线观看免费| 久草福利国产精品资源| 日本一区二区三区爆乳| 欧美日韩国产成人高清视频| 亚洲欧洲精品国产二码| 女同av免费在线播放| 久久久精品亚洲一区二区国产av| 中文天堂国产最新| 丰满少妇被猛烈进入无码| 亚洲人成在线播放a偷伦| 亚洲不卡免费观看av一区二区| 97se狠狠狠狠狼鲁亚洲综合色| 亚洲欧美日韩在线一区| 色综合999| 一区二区在线观看日本视频| 日本高清视频wwww色| 精品无码国产污污污免费网站| 欧洲无码一级毛片无遮挡| 水蜜桃男女视频在线观看网站| 97日日碰曰曰摸日日澡| 国产精品嫩草影院AV| 亚洲va精品va国产va| 亚洲婷婷久悠悠色悠在线播放| 中国女人做爰视频| 日韩一区二区肥| 97久久国产精品成人观看| 亚洲国产精品18久久久久久| 亚洲乱亚洲乱少妇无码99p| 99久久亚洲国产高清观看| 美女啪啪国产| 综合人妻久久一区二区精品| 精品激情成人影院在线播放| 免费99精品国产自在在线| 中文字幕一区二区三区在线不卡 | 精品国产一级毛片大全| 美女偷拍一区二区三区| 久久精品国产四虎| 无遮挡中文毛片免费观看| 亚洲国产一区二区视频| 久久亚洲av成人无码电影a片| 成年视频国产免费观看|