考虑到我们接下来的课程需要显示更多的信息,我们今天讲解利用i2c驱动OLED显示屏,并支持显示中文。
我们常用的0.96寸的OLED显示屏,大多是用1306驱动芯片,所以我们需要先大致了解一下framebuf 及SSD1306模块。
一、framebuf
MicroPython 的 framebuf 模块是一个用于操作帧缓冲区(Frame Buffer)的底层库,它提供了一种直接操作像素数据的方式,常用于驱动显示屏(如 OLED、LCD 等)。帧缓冲区本质上是内存中的一块区域,存储了屏幕像素的显示数据,通过修改这些数据可以直接控制屏幕内容。
核心功能
1、直接像素操作:支持读写单个像素或批量修改像素。
2、图形绘制:提供基本图形(线条、矩形、圆形等)和文本的绘制功能。
3、颜色格式支持:支持多种颜色格式(如单色、16位RGB等),适配不同屏幕硬件。
关键类:FrameBuffer
FrameBuffer 是 framebuf 模块的核心类,需要手动初始化。其构造函数如下:
framebuf.FrameBuffer(buffer, width, height, format, stride=width, ...)
**参数说明**:
- buffer: 字节数组(bytearray)或内存缓冲区,用于存储像素数据。
- width: 屏幕宽度(像素数)。
- height: 屏幕高度(像素数)。
- format: 颜色格式(见下文)。
- stride: 每行像素占用的字节数(默认为 width)。
常用方法
以下是 FrameBuffer 对象的常用方法:
| 方法 | 功能描述
|-------------------------------------|----------------------------------------
| fill(color) | 用指定颜色填充整个缓冲区
| pixel(x, y[, color]) | 设置/获取单个像素颜色
| hline(x, y, w, color) | 绘制水平线
| vline(x, y, h, color) | 绘制垂直线
| rect(x, y, w, h, color) | 绘制矩形边框
| fill_rect(x, y, w, h, color) | 绘制填充矩形
| line(x1, y1, x2, y2, color) | 绘制直线
| text(str, x, y, color) | 在指定位置绘制文本(内置字体)
| scroll(dx, dy) | 滚动屏幕内容(偏移量 dx, dy)
| blit(source, x, y, key) | 将另一个帧缓冲区的数据复制到当前缓冲区
更多更详细的信息大家可以从 MicroPython网站上查询获取。
二、SSD1306
MicroPython 的 ssd1306模块是专为 SSD1306 驱动的 OLED 屏幕设计的驱动库,支持常见的 128x64 或 128x32 分辨率单色显示屏。它基于 framebuf 模块实现,提供了简化的接口控制屏幕显示内容,适用于嵌入式开发(如 ESP32、ESP8266、Ras

最低0.47元/天 解锁文章
3428

被折叠的 条评论
为什么被折叠?



