Avand la dispozitie un display OLED 128*32 pixeli cu driverul SSD1306 vom incerca folosirea acestuia impreuna cu Raspberry Pi Pico.
Displayul folosit de mine fiind pe interfata I2C va simplifica foarte mult conectarea deoarece conexiunea dintre acesta si raspberry Pi Pico se va face pe unul din porturile I2C disponibile. In cazul de fata vom folosi portul I2C0 iar pinii folositi vor fi GPIO8 (pin 11 pe placa) pentru SDA si GPIO9 (pin 12 pe placa) pentru SCL. Displayul se alimenteaza cu o tensiune de 3V3.
Displayul folosit este cel din fotografia de mai jos:
Pentru a folosi acest display vom avea nevoie de o librarie dedicata. Aceasta librarie am gasit-o pe acest site. Libraria va trebui salvata in Raspberry Pi Pico sub denumirea de ssd1306.py. Aceasta librarie o veti gasi atasata si acestui articol.
Codul sursa folosit pentru testarea acestui display este cel de mai jos:
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import framebuf
import utime
WIDTH = 128
HEIGHT = 32
i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=200000)
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)
#Logo-ul Raspberry Pi intr-un fomrat de 32*32 pixeli
buffer = bytearray(b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|?\x00\x01\x86@\x80\x01\x01\x80\x80\x01\x11\x88\x80\x01\x05\xa0\x80\x00\x83\xc1\x00\x00C\xe3\x00\x00~\xfc\x00\x00L'\x00\x00\x9c\x11\x00\x00\xbf\xfd\x00\x00\xe1\x87\x00\x01\xc1\x83\x80\x02A\x82@\x02A\x82@\x02\xc1\xc2@\x02\xf6>\xc0\x01\xfc=\x80\x01\x18\x18\x80\x01\x88\x10\x80\x00\x8c!\x00\x00\x87\xf1\x00\x00\x7f\xf6\x00\x008\x1c\x00\x00\x0c \x00\x00\x03\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
#Incarcare logo in framebuffer
fb = framebuf.FrameBuffer(buffer, 32, 32, framebuf.MONO_HLSB)
while True:
#stergem displayul
oled.fill(0)
#transferare imagine din framebuffer in display
oled.blit(fb, 0, 0)
#afisam logoul
oled.show()
#oprim rularea pentru 1 secunda pentru a vedea logoul
utime.sleep(1)
#oprim displayul
oled.poweroff()
#ramanem cu displayul stins 1 secunda
utime.sleep(1)
#pornim displayul
oled.poweron()
#stergem informatiile afisate pe display
oled.fill(0)
#afisam ceva text
oled.text("www.", 0, 0)
oled.text("electronicstore", 5, 10)
oled.text(".ro", 105, 20)
oled.show()
utime.sleep(1)
oled.poweroff()
utime.sleep(1)
oled.poweron()
#inversam afisarea pe dsplay
oled.invert(True)
oled.fill(0)
oled.blit(fb, 0, 0)
oled.show()
utime.sleep(1)
oled.poweroff()
utime.sleep(1)
oled.poweron()
oled.fill(0)
oled.text("www.", 0, 0)
oled.text("electronicstore", 5, 10)
oled.text(".ro", 105, 20)
oled.show()
utime.sleep(1)
oled.poweroff()
utime.sleep(1)
oled.poweron()
#revenim la afisare normala
oled.invert(False)
Lasa un comentariu