您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python怎么實現(xiàn)溫度傳感器的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
MicroPython顧名思義就是可以在單片機(jī)上跑的Python,借助Micro Python,用戶完全可以通過Python腳本語言實現(xiàn)硬件底層的訪問和控制,比如說控制LED燈泡、LCD顯示器、讀取電壓、控制電機(jī)、訪問SD卡等。目前支持MicroPython的開發(fā)板有好幾種,下面就以TPYBoard為例,簡單介紹一下簡易溫度傳感器的制作方法。
1、實驗?zāi)康?/strong>
1. 學(xué)習(xí)在PC機(jī)系統(tǒng)中擴(kuò)展簡單I/O 接口的方法。
2. 進(jìn)一步學(xué)習(xí)編制數(shù)據(jù)輸出程序的設(shè)計方法。
3. 學(xué)習(xí)DS18B20的接線方法,并利用DS18B20檢測當(dāng)前溫度
3. 學(xué)習(xí)8*8LED點(diǎn)陣接線方法,并將當(dāng)前溫度顯示
2、所需元器件
TPYBoard板子一塊
數(shù)據(jù)線一條
杜邦線若干
8*8LED點(diǎn)陣一個
DS18B20溫度傳感器一個
3、學(xué)習(xí)DS18B20的接線方法,檢測當(dāng)前溫度
先看一下DS18B20針腳含義,如上圖:
TPYBoard的針腳與DS18B20的針腳對應(yīng)關(guān)系如下:
TPYBoard DS18B20
----------------
# 3V3 or any Pin => VDD
# any Pin => DO
# GND => GND
還是看不明白的話,直接上針腳編號
TPYBoard LCD5110
----------------------------
3.3v => VDD
GND => GND
Y10 => DO
接線ok后,在MicroPython的源碼目錄中,進(jìn)入drivers\onewire\目錄,然后將目錄下的文件ds18x20.py和onewire.py復(fù)制到PYBFLASH磁盤的根目錄。復(fù)制文件后要安全退出磁盤,然后重新接入,不然找不到文件,即可運(yùn)行main.py文件了,打印溫度,即可用Putty看到當(dāng)前的溫度。
main.py源代碼:
#main.py import pyb from pyb import Pin from ds18x20 import DS18X20 Pin("Y11",Pin.OUT_PP).low()#GND Pin("Y9",Pin.OUT_PP).high()#VCC pyb.delay(100) DQ=DS18X20(Pin('Y10'))#DQ while True: tem = DQ.read_temp() print(tem) pyb.delay(1000)
4、點(diǎn)亮8*8LED點(diǎn)陣
點(diǎn)陣后面有兩排針腳,一排以1開頭,即1-8針腳,一排以9開頭,即9-16針腳,上圖中〇中的數(shù)字對應(yīng)的即為針腳的對應(yīng)的數(shù)字,當(dāng)ROW 的PIN NO.高電平,COL PIN NO.低電平時候,我們的LED即全部點(diǎn)亮了,為了方便操作行和列,我們可以將ROW的8個引腳接到我們TPYBoard的X1-X8,COL的8個引腳接到我們TPYBoard的Y1-Y8,這樣我們控制X引腳Y引腳就可以控制哪個點(diǎn)亮跟滅了,想顯示任何字都沒問題,快來試試吧。
5、點(diǎn)將溫度顯示在8*8LED點(diǎn)陣上
接線成功以后,我們將測試出溫度通過分割函數(shù)將十位,個位,小數(shù)點(diǎn),以及后面的數(shù)字顯示出來,代碼如下:
import pyb from pyb import Pin from ds18x20 import DS18X20 x_PIN = [Pin(i, Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']] y_PIN = [Pin(i, Pin.OUT_PP) for i in ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8']] temp=['0000,0110,0110,0110,0110,0110,0110,0000','1101,1101,1101,1101,1101,1101,1101,1101, '0000,1110,1110,0000,0111,0111,0111,0000','0000,1110,1110,0000,1110,1110,1110,0000', '0101,0101,0101,0000,1101,1101,1101,1101','0000,0111,0111,0000,1110,1110,1110,0000', '0000,0111,0111,0000,0110,0110,0110,0000','0000,1110,1110,1110,1110,1110,1110,1110', '0000,0110,0110,0000,0110,0110,0110,0000','0000,0110,0110,0000,1110,1110,1110,0000'] tempValue=0 def show(l_num,r_num): flag=0 for x_ in range(0,8): for x_ in range(0,8): if x_!=flag: x_PIN[x_].value(0) left_ = temp[l_num] left_item=left_.split(',') right_ = temp[r_num] right_item=right_.split(',') li_l=left_item[flag] li_r=right_item[flag] y_PIN[0].value(int(li_l[:1])) y_PIN[1].value(int(li_l[1:2])) y_PIN[2].value(int(li_l[2:3])) y_PIN[3].value(int(li_l[3:4])) y_PIN[4].value(int(li_r[:1])) y_PIN[5].value(int(li_r[1:2])) y_PIN[6].value(int(li_r[2:3])) y_PIN[7].value(int(li_r[3:4])) x_PIN[flag].value(1) flag=flag+1 pyb.delay(2) def display(time_,l_num,r_num): for x in range(0,time_): for y in range(0,110): show(l_num,r_num) if __name__=='__main__': #time_t=Timer(4,freq=5,callback=randSensor) DQ=DS18X20(Pin('Y10'))#DQ while 1: tempValue =int(DQ.read_temp()) print(tempValue) l_n=tempValue//10 r_n=tempValue%10 print(l_n) print(r_n) display(60,l_n,r_n) for i in x_PIN: i.value(0)
以上就是“Python怎么實現(xiàn)溫度傳感器”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。