meiyao
树莓派pico 2+OLED显示
树莓派 Pico2 驱动OLED 显示屏。
一、硬件
使用i2c端口0,SDA是GP15,SCL是GP14。将pico的引脚与oled屏对应引脚相连。
Pico引脚 | OLED引脚 |
---|---|
15 (SDA) | SDA |
14 (SCL) | SCL |
3V3 (OUT) | VCC |
GND | GND |
二、软件操作界面:
这里主要是使用的是THONNY软件,把板子接入到电脑后,在右下角可以看到一个CMO3的端口,显示PI PICO,勾选它就可以把写好的代码上传到开发板中。
三、代码:
显示树莓派标志代码
import ssd1306
import framebuf
i2c = machine.I2C(1, sda=machine.Pin(14), scl=machine.Pin(15), freq=400_000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
data = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3E,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x07,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x03,0x80,0x00,0x01,0xF7,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xFF,0x80,0x01,0xF8,0x00,0x0F,0x90,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xE0,0x01,0xFF,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x01,0xF8,0x01,0xFF,0xC0,0x3C,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0xFF,0xFF,0xE1,0xE0,0x70,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x00,0xFF,0xFF,0xE0,0x70,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xFF,0xFF,0xF0,0x39,0xC0,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xFF,0xDF,0xF0,0x1D,0xC0,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0xFE,0x01,0xF8,0x0F,0x80,0x00,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x01,0xF8,0x00,0x7C,0x0F,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xF8,0x00,0x3E,0x0F,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xF0,0x00,0x1F,0x06,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x00,0x1F,0x86,0x00,0x20,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xC0,0x3F,0xE0,0x00,0x0F,0x86,0x00,0x20,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x7F,0xE0,0x00,0x0F,0xC6,0x00,0x40,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x0F,0xF7,0x00,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xE0,0x00,0x0F,0xFF,0x00,0x80,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0x01,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xFF,0x80,0xF0,0x00,0x0F,0x9F,0x83,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xFE,0x00,0x78,0x00,0x0F,0x0F,0xC6,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0x00,0x3C,0x00,0x0E,0x07,0xFC,0x00,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0xE0,0x7C,0x00,0x1E,0x00,0x1E,0x03,0xFC,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x78,0x00,0x1F,0x00,0x3C,0x03,0xFC,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x78,0x00,0x0F,0xE0,0xFC,0x03,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x78,0x00,0x0F,0xFF,0xFC,0x01,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x78,0x00,0x0F,0xFF,0xFC,0x01,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x78,0x00,0x0F,0xFF,0xFC,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x78,0x00,0x0F,0xFF,0xFC,0x03,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x78,0x00,0x0F,0xE0,0xFC,0x03,0xFE,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xC0,0x78,0x00,0x0F,0x00,0x3C,0x03,0xFC,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7C,0x00,0x1E,0x00,0x1E,0x07,0xF8,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x7E,0x00,0x3C,0x00,0x0E,0x07,0xFC,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xFE,0x00,0x38,0x00,0x0F,0x0F,0xC6,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0xFF,0x80,0xF8,0x00,0x07,0x9F,0x83,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xE3,0xF0,0x00,0x07,0xFF,0x01,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x07,0xF7,0x00,0x80,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0xFF,0xF0,0x00,0x07,0xE7,0x00,0xC0,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xC0,0x3F,0xF0,0x00,0x0F,0x86,0x00,0x40,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xF0,0x00,0x0F,0x86,0x00,0x20,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xF0,0x00,0x1F,0x0E,0x00,0x20,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xF0,0x00,0x3E,0x0E,0x00,0x10,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x01,0xF8,0x00,0x7C,0x4F,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xFC,0x00,0xF8,0x1F,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xFF,0x03,0xF8,0x1D,0x80,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x7F,0xFF,0xF0,0x39,0xC0,0x00,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x70,0x00,0x7F,0xFF,0xE0,0xF1,0xC0,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x7F,0xFF,0xE1,0xE0,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x7F,0x00,0xFF,0xC0,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x01,0xF0,0x00,0xFF,0x00,0x3C,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xC0,0x01,0xF8,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0x80,0x03,0xC0,0x00,0x07,0x90,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x07,0x80,0x00,0x01,0xF7,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
buf = framebuf.FrameBuffer(bytearray(data), 128, 64, framebuf.MONO_HLSB)
oled.blit(buf, 0, 0)
oled.show()
显示结果
显示英文
import machine
import ssd1306
i2c = machine.I2C(1, sda=machine.Pin(14), scl=machine.Pin(15), freq=400_000)
# using default address 0x3C
# i2c = I2C(sda=Pin(14), scl=Pin(15))
display = ssd1306.SSD1306_I2C(128, 64, i2c)
display.fill(0)
display.fill_rect(0, 0, 32, 32, 1)
display.fill_rect(2, 2, 28, 28, 0)
display.vline(9, 8, 22, 1)
display.vline(16, 2, 22, 1)
display.vline(23, 8, 22, 1)
display.fill_rect(26, 24, 2, 4, 1)
display.text('MicroPython', 40, 0, 1)
display.text('SSD1306', 40, 12, 1)
display.text('OLED 128x64', 40, 24, 1)
display.show()
显示结果:
代码解析:
创建一个I2C对象,使用I2C总线1(I2C(1))。
sda=machine.Pin(14):设置SDA(数据线)为GPIO 14。
scl=machine.Pin(15):设置SCL(时钟线)为GPIO 15。
freq=400_000:设置I2C通信频率为400 kHz。
fill_rect(x, y, width, height, color):绘制一个填充矩形。
x=0, y=0:矩形左上角坐标为(0, 0)。
width=32, height=32:矩形大小为32x32像素。
color=1:白色(1表示白色,0表示黑色)。
text:要显示的字符串。
x, y:文本起始坐标。
color:文本颜色(1为白色)。
显示矩形:
oled.text("WELCOME!", 0, 0)
oled.text("This is a text", 0, 16)
oled.text("GOOD BYE", 0, 32)
while True:
oled.rect(20, 20, 64, 32, 1)
oled.show()
sleep(2)
oled.fill(0)
oled.fill_rect(20, 20, 64, 32, 1)
oled.show()
sleep(2)
oled.fill(0)
import framebuf
fbuf = framebuf.FrameBuffer(bytearray(8 * 8 * 1), 8, 8, framebuf.MONO_VLSB)
fbuf.line(0, 0, 7, 7, 1)
oled.blit(fbuf, 10, 10, 0) # draw on top at x=10, y=10, key=0
oled.show()
代码解析:
第一行 "WELCOME!" 显示在坐标 (0, 0)
第二行 "This is a text" 显示在 (0, 16)(向下偏移16像素)
第三行 "GOOD BYE" 显示在 (0, 32)
无限循环中交替绘制两种矩形:
空心矩形:左上角在 (20,20),宽64像素,高32像素,白色边框。
实心矩形:位置和大小与空心矩形相同,但填充为白色。
版块:
开发板测评
2025/05/28 20:28
全部评论