文章目录
- 前言
- 一、OLED的介绍
- 二、下载ssd1306驱动
- 三、ssd1306驱动的使用
- 3.1 oled屏连线
- 3.2 初始化oled
- 3.3 画图函数
- 填充整个屏幕
- 显示
- 画点
- 滚动
- 写字
- 画圆形
- 画弧
- 画无填充的矩形
- 画填充矩形
- 画线
- 画xbm图像
- 四、示例代码——正弦函数
- 总结
前言
SSD1306 OLED 是一种常见的小型显示屏,广泛应用于各种微控制器项目中。它具有低功耗、高对比度和快速响应的特点,适合于嵌入式系统中的信息显示和用户界面设计。MicroPython 提供了对 SSD1306 OLED 的驱动支持,使得用户可以方便地在 MicroPython 环境中控制 OLED 显示器,实现各种自定义的图形和文字显示。
一、OLED的介绍
当提到 OLED(Organic Light Emitting Diode,有机发光二极管)模块时,通常是指一种显示技术,它使用有机薄膜层作为发光材料,可以制造出高对比度、高亮度、高分辨率的显示屏。OLED 模块在各种电子设备中被广泛应用,包括智能手机、平板电脑、电视、监视器、可穿戴设备以及嵌入式系统中的小型显示屏。
下面是一些 OLED 模块的常见特点和优势:
高对比度:OLED 屏幕能够产生非常深的黑色,因为在黑色显示时,相应像素可以完全关闭,而不会发出任何光。这导致 OLED 屏幕具有极高的对比度,使得显示内容更加清晰和易于阅读。
快速响应时间:与传统的液晶显示屏相比,OLED 屏幕的响应时间更快。这意味着在切换图像或响应用户输入时,OLED 屏幕能够提供更平滑和更灵敏的体验。
薄型轻便:OLED 技术的特点使得 OLED 模块可以制造得非常薄,这使得它们非常适合用于移动设备和便携式电子产品。
广视角:OLED 屏幕在广泛的视角范围内都能提供清晰的图像,而不会出现颜色失真或亮度下降的情况。
低功耗:OLED 屏幕只有在需要时才会点亮像素,这意味着它们可以在显示静态图像时节省电能,从而延长设备的电池寿命。
OLED 模块通常由驱动芯片、显示面板和连接接口组成。驱动芯片负责控制像素的点亮和关闭,以及处理显示数据。显示面板由一系列的 OLED 像素组成,每个像素可以发光或关闭。连接接口则允许模块与其他电子设备进行通信,以接收要显示的图像或文本数据。
在嵌入式系统中,如微控制器或单片机项目中,常用的 OLED 模块会集成一些简化接口,使得与主控制器的通信更加容易。通常,这些模块提供了一些基本的方法和函数,允许用户在屏幕上绘制图形、显示文本或执行其他
二、下载ssd1306驱动
大家可以在我们的博客中资源里找到我们的ssd1306驱动进行下载使用
三、ssd1306驱动的使用
3.1 oled屏连线
我们把线通过下图连接好线即可:
3.2 初始化oled
对于我们的oled,他是使用I2C进行通信的,他需要先初始化一个I2C对象:
from machine import Pin, I2Ci2c = I2C(0, scl=Pin(22), sda=Pin(21))
接下来我们初始化我们的oled即可,我们使用的是I2C进行通信,屏幕尺寸是128*64:
import ssd1306oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
3.3 画图函数
填充整个屏幕
我们可以使用下面这个函数来填充整个屏幕:
SSD1306.fill(col)
当参数1为1时,代表整个屏幕为白色,如果为0则是黑色
显示
我们可以使用下面这个函数来显示屏幕上的信息:
SSD1306.show()
画点
我们可以使用下面这个函数来画点:
SSD1306.pixel(x, y)
参数为你需要显示点的坐标
滚动
我们可以使用下面这个函数来滚动:
SSD1306.scroll(dx, dy)
他的参数为你要滚动的x,y偏移值
写字
我们可以使用下面这个函数来写字:
SSD1306.text(string, x, y, col=1)
参数1为你要显示的字,参数2和3为字的左上角坐标,col为字显示是白色还是黑色
画圆形
我们可以使用下面这个函数来画圆形:
SSD1306.draw_circle(x0, y0, r, color=1)
参数1和2为圆心的坐标,r为半径长度,color为字显示是白色还是黑色
画弧
我们可以使用下面这个函数来画弧:
SSD1306.draw_arc(x0, y0, r, start_angle, end_angle, color=1)
参数1和2为圆心的坐标,r为半径长度,start_angle与end_angle为开始和结束的角度,color为字显示是白色还是黑色
画无填充的矩形
我们可以使用下面这个函数来画无填充的矩形:
SSD1306.draw_rect(x0, y0, width, height, col=1)
参数1和2为矩形左上角的坐标,width和height为矩形的宽度和高度,color为字显示是白色还是黑色
画填充矩形
我们可以使用下面这个函数来画填充矩形:
SSD1306.draw_fill_rect(x, y, width, height, col=1):
参数1和2为矩形左上角的坐标,width和height为矩形的宽度和高度,color为字显示是白色还是黑色
画线
我们可以使用下面这个函数来画线:
SSD1306.draw_line(x0, y0, x1, y1, col=1)
参数1和2为矩形左上角的坐标,width和height为矩形的宽度和高度,color为字显示是白色还是黑色
画xbm图像
我们可以使用下面这个函数来画xbm图像:
SSD1306.draw_xbm(x, y, xbm_data, width, height, col=1):
参数1和2为xbm左上角的坐标,xbm_data为xbm图像存储的数据,width和height为矩形的宽度和高度,color为字显示是白色还是黑色
四、示例代码——正弦函数
from machine import Pin, I2C
import ssd1306
import time
import math# ESP32 Pin assignment
i2c = I2C(0, scl=Pin(22), sda=Pin(21))WIDTH = 128
HEIGHT = 64
oled = ssd1306.SSD1306_I2C(WIDTH, HEIGHT, i2c)def draw_sine():amplitude = 30 # 正弦函数振幅frequency = 2 # 正弦函数频率phase_shift = 0 # 正弦函数相位偏移# 清除屏幕oled.fill(0)# 绘制坐标轴oled.draw_line(0, HEIGHT // 2, WIDTH, HEIGHT // 2, 1)oled.draw_line(WIDTH // 2, 0, WIDTH // 2, HEIGHT, 1)# 绘制正弦函数曲线for x in range(WIDTH):y = int(HEIGHT // 2 - amplitude * math.sin(2 * math.pi * frequency * x / WIDTH + phase_shift))oled.pixel(x, y, 1)draw_sine()oled.show()
总结
通过本文,我们简要介绍了 MicroPython 中 SSD1306 OLED 的使用方法。SSD1306 OLED 是一种常见的小型显示屏,具有低功耗、高对比度和快速响应的特点,适合于各种微控制器项目中的信息显示和用户界面设计。MicroPython 提供了对 SSD1306 OLED 的驱动支持,用户可以通过简单的代码,轻松地控制 OLED 显示器,实现各种自定义的图形和文字显示。