本例是使用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-
發佈留言