【得捷Follow me第3期】任务2:驱动扩展板上的OLED屏幕
[复制链接]
扩展板中OLED屏幕使用SSD1306驱动, 通过IIC通讯. 根据文档, 需要使用的是GPIO6/7两个针脚.
SSD1306驱动文件使用的是 直接将ssd1306.py加入项目, 并刷入核心版即可.
首先显示文字和简单图形.
from machine import Pin, I2C
import ssd1306
i2c = I2C(scl=Pin(7), sda=Pin(6))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(1)
oled.text('hello world', 1, 0)
oled.text('esp33c3', 0, 16)
oled.text('epix', 1, 32)
oled.rect(1, 48, 128, 16, 1)
oled.ellipse(97, 32, 16, 16, 1)
oled.show()
效果如图
显示图片
首先准备一张小于128*64的图片, 我这里使用了一张micropython的logo: 缩放为64*64, 二值化存为256色位图
这里我们偷懒一下, 不读调色板, 直接读64*64的数据, 反正要么黑色要么白色
import struct
with open('logo.bmp', 'rb') as f:
header_type = f.read(2)
assert header_type == b'BM'
f.seek(0x0A)
offset = struct.unpack('<l', f.read(4))[0]
print(offset)
f.seek(offset)
# data = f.read(64 * 64)
for i in range(64):
for j in range(64):
index = i * 64 + j
pixel = f.read(1)
oled.pixel(j+32, 63-i, 1 if pixel == b'\xff' else 0)
oled.show()
效果如图
|