my_util.py

Code

程式碼如下:(程式碼右小角 view raw 點開後可存檔)

# name: my_util.py
from machine import Pin, SPI, SoftSPI, I2C, SoftI2C
# ssd1306.py download from:
# https://raw.githubusercontent.com/micropython/micropython/master/drivers/display/ssd1306.py
import ssd1306
def get_display():
# assign IIC or SPI
useSPI = True
# assign hardware SPI/IIC or software SPI/IIC
useSoft = False
if useSPI:
dc = Pin(4) # data/command
rst = Pin(5) # reset
cs = Pin(15) # chip select, some modules do not have a pin for this
if useSoft:
spi = SoftSPI(baudrate=500000, polarity=1, phase=0,
sck=Pin(14), mosi=Pin(13), miso=Pin(12))
else:
spi = SPI(1) # sck=14 (scl), mosi=13 (sda), miso=12 (unused)
display = ssd1306.SSD1306_SPI(128, 64, spi, dc, rst, cs)
else:
if useSoft:
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=400000)
else:
# I2C(0, scl=22, sda=21, freq=400000)
# I2C(1, scl=25, sda=26, freq=400000)
i2c = I2C(0)
# using default address 0x3C
display = ssd1306.SSD1306_I2C(128, 64, i2c)
#display = ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3d)
return display
view raw my_util.py hosted with ❤ by GitHub

自備檔案

functions 說明

🔧 get_display / 設定 ssd1306 🔧
SSD1306 通常使用 SPI 或 I2C,而使用的 Pin 脚通常都是查詢 datasheet,或網路上找 Pinouts 圖,而 MicroPython 和 Python 一樣有 introspection 特性,所以有一個更輕鬆的方法,就是直接問問它本人即可。

>>> from machine import Pin, I2C, SPI >>> I2C(0) I2C(0, scl=22, sda=21, freq=400000) >>> I2C(1) I2C(1, scl=25, sda=26, freq=400000) >>> SPI(1) SPI(id=1, baudrate=500000, polarity=0, phase=0, bits=8, firstbit=0, sck=14, mosi=13, miso=12) >>>

只要依著它講的接線就好啦! 如果沒有照著接,那麼它會提醒你要改用 SoftI2C or SoftSPI 才行。

>>> i2c = I2C(sda=Pin(23), scl=Pin(19)) Warning: I2C(-1, ...) is deprecated, use SoftI2C(...) instead >>>

可依個人需求修改 for I2C or SPI以及脚位。我是設定使用 SPI1,接線資訊如下:

MOSI MISO SCK DC RST CS
13 unuse 14 4 5 15