【得捷电子Follow me第3期】任务2:驱动扩展板上的OLED屏幕
[复制链接]
一、任务主要内容
二、驱动oled屏幕显示文本,图形和图片
根据seeed官网的信息,XIAO扩展板上集成了一块0.96寸的I2C接口的oled屏幕,使用的引脚是GPIO6和GPIO7,两个引脚貌似不支持硬件I2C,所以只能使用软件I2c来实现。
对于OLED的驱动,网上已经有很多大神写的开源库了,这里也就不再重复造轮子了
因为OLED屏幕的驱动芯片是SSD1306,所以在网上找到ssd1306的micropython库即可,多如牛毛,随便找一个都能用。
这里直接上链接:
下载完成后,将ssd1306.py文件上传到ESP32C3设备中备用
接下来是就是使用ssd1306的驱动库进行相关内容的显示
文本和图形显示比较简单,直接调用ssd1306的库函数就能实现了
例如下面的显示文本代码:
# 显示文字
oled.fill(0) # Clear the screen
oled.text("Hello, ESP32C3!", 10, 15)
oled.text("EEWORLD!", 30, 40)
oled.text("TEXT TESET...", 20, 55)
oled.show() # Show the text
time.sleep(2)
下面的图形显示代码
#显示图形
oled.fill(0) # Clear the screen
oled.line(0, 0, 100, 100, 1) # 画线
oled.rect(60, 10, 50, 30, 1) # 画矩形
oled.show()
time.sleep(2)
最后就是图片显示,图片显示会稍微复杂一点,会涉及到图片的简单处理。
第一步,准备一张128*64以内的图片,因为oled的屏幕像素大小是128*64的,所以不能超过这个尺寸
第二步,将图片设置为单色图片,也就是黑白的图片
第三步,将图片转为为.pbm格式并上传到ESP32C3设备中备用
图片格式转换的网址为:https://convertio.co/zh/
完成后如下:
第四步,编写代码显示上面准备的图片,代码中会用到famebuf库,步熟悉这个库的同学可以取看看这个库的详细介绍
上代码:
# 显示图片
with open('MicroPython.pbm', 'rb') as f: # 读取图片文件
f.readline() # 读取文件第一行,图片格式
width, height = [int(v) for v in f.readline().split()] # 读取图片像素大小
data = bytearray(f.read()) # 读取图片数据
f.close()
fbuf = framebuf.FrameBuffer(data, width, height, framebuf.MONO_HLSB) # 指定图片数据,大小及格式
oled.fill(0) # 清屏
oled.blit(fbuf, 0, 0) # 数据放入缓冲区
oled.show() # 显示
time.sleep(2)
三、视频演示
视频无法通过网址嵌入,就先以附件的方式放在这里吧
oled.mp4
(25.75 MB, 下载次数: 0)
|