【MicroPython教程】SSD1306 oled


前言

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, I2C

i2c = I2C(0, scl=Pin(22), sda=Pin(21))

接下来我们初始化我们的oled即可,我们使用的是I2C进行通信,屏幕尺寸是128*64:

import ssd1306

oled_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 显示器,实现各种自定义的图形和文字显示。

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值