MicroPython on Nucleo-F401RE, 6. I2C Sensor AM2320

一樣先來一張圖!

可以看到OLED顯示了温度和溼度, 而且是大字體!
硬體接線和前一篇貼文一樣, 只是多了一顆AM2320和4條短線。因為AM2320和OLED接線腳位排列順序不同, 只好多用4條短線來連接!

這個OLED接線腳位由左至右如下排列順序:
Vcc, GND, SCL, SDA

AM2320接腳順序則為:
VCC, SDA, GND, SCL
程式部份, 其實都已經有人寫好了。
首先先去取得AM2320的驅動程式, 
用之前貼文教的方法, 將取得的am2320.py程式複製到開發板的/flash檔案目錄去。

接著為了顯示大字體, 可以到前面貼文提到的趙英傑先生寫的那本書的網站去取得大字體的程式bigSymbol.py。但因為MicroPython新的firmware有一些小修改, 所以我們也要自己修改一下bigSymbol.py, 不用擔心, 已經改好, 如下:

同樣, 取得後, 請複製到開發板/flash檔案系統去!
最後就可以寫程式了:

import bigSymbol
from machine import Pin, I2C
from time import sleep
import ssd1306, am2320
i2c = I2C(1)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
sensor = am2320.AM2320(i2c)

dsp = bigSymbol.Symbol(oled)
dsp.clear()
dsp.temp(0, 18)
dsp.humid(0, 38)
while True:
    sensor.measure()
    # dsp.text('18.50c', 34, 18)
    # dsp.text('25.00%', 34, 38)
    dsp.text('{:.2f}c'.format(sensor.temperature()), 34, 18)
    dsp.text('{:.2f}%'.format(sensor.humidity()), 34, 38)   
    oled.show()
    sleep(4)

程式寫好要執行, 有幾個做法:
1. 存成檔案, 複製到開發板檔案系統, 然後利用my.run('xxx.py')來執行
2. 在REPL, CTRL-E 進入貼上模式, 將程式貼上, CTRL-D離開執行

程式還在開發階段時, 用貼上的方式, 可以較快速的驗證是否寫對。當確認程式都沒問題了, 就建議存成檔案放到開發板去。以後可以使用my.ls()查看存在那些程式, my.run()來執行程式。若固定每次開機都要執行這支程式, 可以存成main.py的檔名, 那以後斷電重開就會自動執行。



留言

這個網誌中的熱門文章

D-BUS學習筆記

關於藍牙裝置找尋(inquiry, scan)兩三事

Cisco Switch學習筆記: EtherChannel