
本例是使用1.3吋的128 x 64解析度I2C介面的單色螢幕。
接線方式:
| Raspberry PI PICO | SH1106 OLED |
| 負級接地 | GND |
| 可接3.3~5.5v (本例使用3.3v) | VCC |
| 任一組I2C控制器的SCL (21) | SCL |
| 任一組I2C控制器的SDA (20) | SDA |
I2C控制器在Raspberry PI PICO上面有兩組,SCL與SDA只要接在任一組相同的控制器上對應的腳位即可。
再來是到官方Github下載驅動程式sh1106.py,並放到專案底下(與主程式同一資料夾即可)
https://github.com/raspberrypi/pico-micropython-examples/blob/master/i2c/1106oled/sh1106.py
主程式:
from LCD import sh1106
from machine import I2C, Pin, Timer
# 初始化 I2C 通道,這裡使用控制器0號
i2c0 = I2C(0, scl=Pin(21), sda=Pin(20), freq=1000000)
# 初始化顯示器
displayOLED = sh1106.SH1106_I2C(128, 64, i2c0)
# 翻轉螢幕指令
mirrorVertically = 0xa0
# 更新畫面資料timer
show_timer = Timer()
# 更新畫面資料tag
tag_start_show = False
# 螢幕顯示數字跳動
count = 0
# 初始化螢幕設定
def init_display():
displayOLED.sleep(False)
# 清空顯示器
displayOLED.fill(0)
# 翻轉螢幕
displayOLED.rotate(mirrorVertically)
# 螢幕畫面顯示,會需要一段時間
def show_data():
global count
text1 = str(count)
# 清空顯示器
displayOLED.fill(0)
# 要顯示的文字, 開始x軸, 開始y軸
displayOLED.text("SH1106 Count", 20, 10)
displayOLED.text(text1, 58, 30)
# 最後顯示出來
displayOLED.show()
count = count+1
# 開始更新螢幕資訊
def start_show(t):
global tag_start_show
tag_start_show = True
def main():
global tag_start_show
# 每秒顯示一次畫面
show_timer.init(mode=Timer.PERIODIC, period=1000, callback=start_show)
# 不斷檢查Tag是否被觸發,觸發後才去執行耗時處理,避免程式卡死
while True:
if tag_start_show:
show_data()
tag_start_show = False
# 開始執行
main()
執行效果:

-END-
發佈留言