程式碼如下:(程式碼右小角 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
🔧 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 |