【得捷电子Follow me第3期】任务2:驱动扩展板上的OLED屏幕
[复制链接]
任务2:驱动扩展板上的OLED屏幕
这个任务需要使用扩展版,具体对接方式如下。
任务内容是在扩展板的OLED上显示文字内容和图形,扩展板上的OLED采用SSD1306驱动芯片。因此首先需要安装响应的包。
首先在工具菜单栏下,点击管理包按钮
在搜索栏中输入SSD1306,并点击后方按钮搜索。
搜索结果中点击ssd1306,并点击下方的安装按钮安装此包
安装过程
成功安装之后可以看到具体的安装信息。
此时在左侧的MicriPython设备中,可以在lib中看到ssd1306的包了。
接下来核对硬件,扩展板上的oled使用的是I2C驱动,正好使用如下图所示的GPIO7和GPIO6分别作为SCL和SDA引脚。
下面可以开始编程了。
首先import进来I2C以及ssd1306的包
然后指定I2C的引脚。接着指定loed的宽和长,即可显示文字内容了
import time
from machine import Pin, SoftI2C
import ssd1306
import math
i2c = SoftI2C(scl=Pin(7), sda=Pin(6))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.fill(0) # 清除显示
oled.text("Hello,DiGi-Key", 10, 15)
oled.text("Hello,EEWorld", 10, 40)
oled.show() # 显示内容
调试运行当前脚本程序,扩展板上显示文字内容如下
接下去显示图形,我们可以在OLED上显示几个集合图形,分别为矩形、圆形和三角形,其中圆形单独定义了一个函数。只要输入位置和半径即可。
显示效果如下
完整代码如下
import time
from machine import Pin, SoftI2C
import ssd1306
import math
from utime import sleep_ms
import framebuf
i2c = SoftI2C(scl=Pin(7), sda=Pin(6))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# 清空屏幕
oled.fill(0)
oled.show()
# 画一个简单的圆形
def draw_circle(x0, y0, r, color):
x = r
y = 0
err = 0
while x >= y:
oled.pixel(x0 + x, y0 + y, color)
oled.pixel(x0 + y, y0 + x, color)
oled.pixel(x0 - y, y0 + x, color)
oled.pixel(x0 - x, y0 + y, color)
oled.pixel(x0 - x, y0 - y, color)
oled.pixel(x0 - y, y0 - x, color)
oled.pixel(x0 + y, y0 - x, color)
oled.pixel(x0 + x, y0 - y, color)
if err <= 0:
y += 1
err += 2*y + 1
if err > 0:
x -= 1
err -= 2*x + 1
# 显示图形并切换
while True:
# 显示矩形
oled.rect(10, 10, 50, 30, 1)
oled.show()
sleep_ms(2000)
# 清空屏幕
oled.fill(0)
oled.show()
sleep_ms(200)
# 显示圆形
draw_circle(80, 40, 15, 1)
oled.show()
sleep_ms(2000)
# 清空屏幕
oled.fill(0)
oled.show()
sleep_ms(200)
# 显示三角形
oled.line(100, 10, 80, 40, 1)
oled.line(80, 40, 120, 40, 1)
oled.line(120, 40, 100, 10, 1)
oled.show()
sleep_ms(2000)
# 清空屏幕
oled.fill(0)
oled.show()
sleep_ms(200)
|