跳过主要内容

如何使用树莓派Pico OLED显示屏(更新)

覆盆子皮皮的OLED显示屏
(图片来源:Tom’s Hardware)

2021年4月23日更新:

我们已经扩展了这个如何,它现在包括在显示器上绘制形状和对象的部分,如何转换位图图像为OLED显示器,以及如何动画图像。

原文:

覆盆子π皮科当涉及到数字显示时,有很多选择。我们可以使用LCD屏幕,输出到VGA / DVI或使用定制的屏幕如Pico显示Pico Explorer基地的“诱导多能性”显示。但有时我们需要一个小而便宜的选择来完成任务。OLED像本教程中使用的0.96英寸模型这样的屏幕,使用MicroPython是很简单的,而且它们只需要几美元(或英镑),是项目的理想选择。

在本教程中,我们将学习如何通过I2C接口将OLED屏幕连接到Raspberry Pi Pico,然后我们将通过tonny编辑器安装MicroPython库,并学习如何使用它将文本写入显示。

OLED屏幕使用I2C协议与树莓派Pico接口。这意味着我们只需要。

如何将OLED屏幕连接到树莓皮皮

使用以下连接。

(图片来源:Tom’s Hardware)

1.连接接地屏幕的任何GND在Pico(黑线)上。

2.连接VDD / VCC到3V3在Pico(红线)上。

3.连接SCK / SCL至I2C0 SCL(GP1,物理引脚2,橙色线)。

4.连接SDA到I2C0 SDA(GP0,物理引脚1,黄线)。

5.连接你的树莓派Pico到你的电脑并打开tonny应用程序。

在连接了硬件并打开了tonny之后,我们现在需要安装一个库,以便Python与屏幕通信。

6.点击Tools > Manage Packages为Python库打开tonny的包管理器。

7.输入“ssd1306”,然后点击“搜索PyPI”。

(图片来源:Tom’s Hardware)

8.点击“micropython-ssd1306”在返回的结果中,然后点击安装.这将把库复制到Pico上的lib文件夹中。

(图片来源:Tom’s Hardware)

9.单击“关闭”,返回主界面。

覆盆子皮皮的OLED屏幕编程

要将一行文本写入OLED屏幕,我们只需要六行MicroPython。

1.从机器库中,导入Pin和I2C类.它们用于与连接在Pico的GPIO上的OLED屏幕通信。

从机器进口引脚,I2C

2.导入OLED屏幕库

从ssd1306导入SSD1306_I2C

3.创建一个对象i2c,其中存储了正在使用的I2C通道,在本例中为零,我们连接到的SDA和SCL引脚,最后是我们连接到OLED屏幕的频率。

i2c = i2c (0, sda =销(0),sci =销(1),频率= 400000)

4.创建一个对象,oled,将用于与OLED屏幕通信。它有三个参数,屏幕的宽度和高度(128 x 64像素)和I2C连接细节。

oled = SSD1306_I2C(128, 64, i2c)

5.写一行特克斯T到屏幕左上角,位置0,0。

oled。text("Tom's Hardware", 0,0)

6.最后使用show命令将输出呈现到屏幕上。

oled.show ()

最终的代码应该是这样的

from machine import Pin, I2C from ssd1306 import SSD1306_I2C I2C =I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) oled = SSD1306_I2C(128, 64, I2C) oled。text("Tom's Hardware", 0,0) old .show()

(图片来源:Tom’s Hardware)

7.保存并运行代码。和Thonny中的任何Python脚本一样,点击File >> Save,并将文件以oled-test.py的形式保存到Raspberry Pi Pico中。当准备好了,点击绿色播放按钮开始代码,你的文本将出现在OLED屏幕上。

用Pico在OLED屏幕上绘制简单形状

只需单个命令就可以将简单的形状和线路绘制到显示器上。每个命令都需要oled.show ()为了被人看到。注意,大多数这些方法都有一个颜色参数,但是在单色屏幕中,您总是会设置一个颜色为“1”(0表示像素关闭)。

  • oled.pixel (x, y, c):在x,y位置绘制一个像素,并使用c设置像素的颜色,1被点亮,0被关闭。例子:
oled.pixel(10、10、1)
  • oled.hline (x, y, w, c):从点x,y画一条水平线,宽度(w)以像素为单位,颜色(c)。例子:
oled.hline(2、3、4、1)
  • oled.vline (x, y, h, c):从点x,y画一条垂直线,高度(h)以像素为单位,颜色(c)。例子:
OLED.VLINE(0,0,64,1)
  • oled.line (x1, y1, x2, y2, 1):用颜色(c)从x1, y1点到x2, y2点画一条对角线。例子:
oled。行(0,0,128,64,1)
  • oled.rect (x, y, w, h, c):绘制一个矩形,从点x.y开始,并设定宽度(w)和高度(h)。使用(c)设置像素的颜色。例如:
oled。矩形(0,0,64,32,1)
  • oled.fill_rect (x, y, w, h, c):绘制一个从x.y点开始的填充矩形,并设置宽度(w)和高度(h)使用(c)来设置像素的颜色。例如:
oled。Fill_rect (0, 0, 64, 32, 1)

用Pico在OLED屏幕上显示图形

(图片来源:Tom’s Hardware)

我们可以在屏幕上显示更多的文字。使用一种巧妙的技术,我们可以将JPEG图像转换为字节串。

我们将使用上面的代码作为工作的基础。因此,如果您还没有这样做,请将上面的最终代码复制并粘贴到tonny中。

1.导入framebuf库。这个库允许代码创建位图图像并在显示器上显示它们。

从机器导入Pin,从ssd1306导入SSD1306_I2C导入framebuf

2.创建一个新对象TH,它将存储组成图像的字节数组。现在将数组的内容保留为空,稍后我们将填充这个空白。

i2c= i2c (0,sda=Pin(0), scl=Pin(1), freq=400000) oled = SSD1306_I2C(128, 64, i2c) TH = bytearray()

3.创建一个对象FB,它将把图像加载到framebuffer中。我们传递bytearray对象的名称、图像的尺寸(64 x 64像素),然后将图像配置为1位的单色图像。

fb = framebuf。FrameBuffer (TH, 64年,64年,framebuf.MONO_HLSB)

4.清除屏幕,然后将图像移到屏幕上。然后使用show更新屏幕。位块将图像绘制到屏幕上,在这种情况下,它将64 x 64的图像放置在屏幕的死中心。其中32是水平(x)位置,0是垂直(y)位置。

oled.fill (0) oled.blit (fb, 32岁,0)oled.show ()

我们的对象TH目前没有图像要显示。为了创建图像的bytearray,我们首先需要一个合适的图像。屏幕的大小是128 × 64像素,但64 × 64像素的图像将非常适合屏幕的中心。图像必须为JPEG格式。

要将图像转换为bytearray,我们将使用Don Hui的(Novaspirit) img2bytearray python脚本。

1.下载ZIP压缩文件并将其解压缩到您的机器上。这将创建一个文件夹img2bytearray,用于存储Hui的Python文件。

2.将图像复制到img2bytearray文件夹。

3.打开命令提示符/终端窗口,导航到img2bytearray文件夹。

4.要转换图像,我们调用命令img2byteArray。我们需要提供三个额外参数。首先是图像文件的名称,然后是图像的尺寸,在本例中是64 × 64像素。

python3 img2bytearray.py YOUR-IMAGE.jpg 64 64

5.该命令输出一个字节流。复制b的文本'…'并将其粘贴到TH对象的括号中。

TH =中bytearray (b“…”)

最终的代码应该是这样的

从机器导入引脚,I2C来自SSD1306 Import SSD1306_I2C导入FrameBUF I2C = I2C(0,SDA = PIN(0),SCL = PIN(1),FREQ = 400000)OLED = SSD1306_I2C(128,44,I2C)TH = BYTEARRAY(b’...’) fb = framebuf.FrameBuffer(TH,64,64, framebuf.MONO_HLSB) oled.fill(0) oled.blit(fb,32,0) oled.show()

6.保存并运行代码。和Thonny中的任何Python脚本一样,点击File >> Save,并将文件以oled-test.py的形式保存到Raspberry Pi Pico中。当准备好了,点击绿色播放按钮开始代码,你的图像将出现在OLED屏幕上。

用Pico在OLED屏幕上动画图形

(图片来源:Tom’s Hardware)

用OLED显示屏制作动画,就是移动或改变物体,给人一种移动的错觉。在上面的GIF中,你可以看到Tom 's Hardware hammer和logo在屏幕上滚动。为了实现这一点,我们使用了两个字节数组,分别用于hammer (TH)和logo (logo)。

同样,我们将在前面示例的代码基础上进行构建。

1.导入以前的代码库。

从机器导入Pin,从ssd1306导入SSD1306_I2C导入framebuf

2.设置OLED屏幕的I2C引脚。

i2c= i2c (0,sda=Pin(0), scl=Pin(1), freq=400000)

3.创建一个while True循环连续运行代码。

而真正的:

4.创建第TH字节数组.在那里,我们存储组成Tom 's Hardware hammer的字节。

TH =中bytearray (b \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 [P \ x00 \ x00 \ x00 \ x00 \ x00 \ x03 \ xad \ xec \ x0f \ x00 \ x00 \ x00 \ x00 \房车\ xb6 \ x1a \ x80 \ x00 \ x00 \ x00 \ x16 \ xdb [m \ x80 \ x00 \ x00 \ x00um \ xb5 \ xb6 \ x80 \ x00 \ x00 \ x00 [\ xb5n \ xdb \ x00 \ x00 \ x00 \ x01 \ xadW \ xb5m \ x80 \ x00 \ x00 \ x01w \ xed [\ xb6 \的混合体0 \ x00 \ x00 \ x03 \ xa8 \ x1a \ xec + \ x00 \ x00 \ x00 \ x05@ \ x17P \ x1d \ x00 \ x00 \ x00 \ x0e \ x00 \ r \ xb0 \ x06 \ x80 \ x00 \ x00 \ (\ x00 \ n \ xd0 \ x00 \ x00 \ x00 \ x00 \ (\ x00 \ x17的\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00@ \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1f \ xa0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ n \ xd0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ r“\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x17 \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ n \ xd0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1b ' \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ r \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x16 \ xa0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x0bp \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1d \ xa0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ n \ xd0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x17p \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1a \ xa0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ r \ xd0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x16 \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1b ' \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ r \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x16 \ xd0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1bp \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ r \ xa8 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x16 \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1b ' \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x15 \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1e \ xd0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x13p \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1d\ xa8 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x16 \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x15 \ xd0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1a \ xb8 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x17的\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1a \ xd8 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x17h \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1a \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1d \ xd8 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 + h \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x16 \ xb0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x1b \ xd8 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x16的\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x0b \ xa0 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 ')

5.创建一个对象FB,它将把图像加载到framebuffer中,然后清除屏幕。我们传递bytearray对象的名称、图像的尺寸(64 x 64像素),然后将图像配置为1位的单色图像。

fb = framebuf。FrameBuffer (TH, 64年,64年,framebuf.MONO_HLSB) oled.fill (0)

6.使用范围从-64到128的for循环来创建锤子的基本滑动动画。负值将锤子隐藏在屏幕的左边,从左到右缓慢地滚动锤子,直到它超出了可见范围。通过改变里面“i”的值oled.blit ()我们创造了运动的错觉。

For I in range(- 64128): oled.blit(fb, I,0) oled.show()

7.为Tom 's Hardware标识创建一个新的bytearray。

LOGO =字节组(B'\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00\ X00 \ X00 \X00\x00\x00\x00\x01\x800\xc0\xc7\xf8~0\xc3\x0c\x1f\x87\xf8\x0c\x00\x00\x01\x800\xc1\xcf\xec\x7f0\xc7\x1c\x1f\xc7\xf8\x0c\x00\x00\x01\x800\xc1\xc1\x8ec\x99\xc6\x1c\x18\xe6\x00\x0c\x0c&`\x180\xc3\xe0\x06a\x99\xe6\x1e\x18f\x00\x1f>\x7f\xf8~0\xc3a\x8ea\x99\xe66\x18f\x00\x0cws\x98d?\xc3a\xbca\x99\xee6\x1f\xc7\xf0\x0ccs\x98`?\xc61\xb8a\x8fs\x18|0\xcc\x1d\x86|\x06\x18\xc1\xd8g\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')

8.创建一个对象FB,它将把图像加载到framebuffer中,然后清除屏幕。我们传递bytearray对象的名称、图像的尺寸(128 x 64像素),然后将图像配置为1位的单色图像。

fb = framebuf。FrameBuffer(标志,128,64,framebuf.MONO_HLSB)

9.剩下的代码基本上和之前一样,唯一的区别是for循环的范围更改为-128到128,以适应更大的Tom 's Hardware标志在屏幕上滚动。

OLED.FEX(0)在范围内(-128,128):OLED.BLIT(FB,I,0)OLED.SHOW()

您的代码应该如下所示

从机进口引脚,从ssd1306进口SSD1306_I2C进口framebuf I2C = I2C(0,SDA =引脚(0),SCL =引脚(1),频率= 40万)OLED = SSD1306_I2C(128,64,I2C),而真正的I2C:TH=字节组(b'\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 [P \ X00 \ X00 \ X00 \ X00 \ X00 \ X03 \ XAD \ XEC \ X0F \ X00 \ X00 \X00\x00\rv\xb6\x1a\x80\x00\x00\x00\x16\xdb[m\x80\x00\x00\x00um\xb5\xb6\x80\x00\x00\x00[\xb5n\xdb\x00\x00\x00\x01\xadW\xb5m\x80\x00\x00\x01w\xed[\xb6\x80\x00\x00\x03\xa8\x1a\xec+\x00\x00\x00\x05@\x17P\x1d\x00\x00\x00\x0e\x00\r\xb0\x06\x80\x00\x00\x08\x00\n\xd0\x00\x00\x00\x00\x08\x00\x17`\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x1f\xa0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\x00\x00\r`\x00\x00\x00\x00\x00\x00\x17\xb0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\x00\x00\x1b`\x00\x00\x00\x00\x00\x00\r\xb0\x00\x00\x00\x00\x00\x00\x16\xa0\x00\x00\x00\x00\x00\x00\x0bp\x00\x00\x00\x00\x00\x00\x1d\xa0\x00\x00\x00\x00\x00\x00\n\xd0\x00\x00\x00\x00\x00\x00\x17p\x00\x00\x00\x00\x00\x00\x1a\xa0\x00\x00\x00\x00\x00\x00\r\xd0\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x1b`\x00\x00\x00\x00\x00\x00\r\xb0\x00\x00\x00\x00\x00\x00\x16\xd0\x00\x00\x00\x00\x00\x00\x1bp\x00\x00\x00\x00\x00\x00\r\xa8\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x1b`\x00\x00\x00\x00\x00\x00\x15\xb0\x00\x00\x00\x00\x00\x00\x1e\xd0\x00\x00\x00\x00\x00\x00\x13p\x00\x00\x00\x00\x00\x00\x1d\xa8\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x15\xd0\x00\x00\x00\x00\x00\x00\x1a\xb8\x00\x00\x00\x00\x00\x00\x17`\x00\x00\x00\x00\x00\x00\x1a\xd8\x00\x00\x00\x00\x00\x00\x17h\x00\x00\x00\x00\x00\x00\x1a\xb0\x00\x00\x00\x00\x00\x00\x1d\xd8\x00\x00\x00\x00\x00\x00+h\x00\x00\x00\x00\x00\x00\x16\xb0\x00\x00\x00\x00\x00\x00\x1b\xd8\x00\x00\x00\x00\x00\x00\x16`\x00\x00\x00\x00\x00\x00\x0b\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') fb = framebuf.FrameBuffer(TH,64,64, framebuf.MONO_HLSB) oled.fill(0) for i in range(-64,128): oled.blit(fb,i,0) oled.show() LOGO = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x800\xc0\xc7\xf8~0\xc3\x0c\x1f\x87\xf8\x0c\x00\x00\x01\x800\xc1\xcf\xec\x7f0\xc7\x1c\x1f\xc7\xf8\x0c\x00\x00\x01\x800\xc1\xc1\x8ec\x99\xc6\x1c\x18\xe6\x00\x0c\x0c&`\x180\xc3\xe0\x06a\x99\xe6\x1e\x18f\x00\x1f>\x7f\xf8~0\xc3a\x8ea\x99\xe66\x18f\x00\x0cws\x98d?\xc3a\xbca\x99\xee6\x1f\xc7\xf0\x0ccs\x98`?\xc61\xb8a\x8fs\x18|0\xcc\x1d\x86|\x06\x18\xc1\xd8g\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') fb = framebuf.FrameBuffer(LOGO,128,64, framebuf.MONO_HLSB) oled.fill(0) for i in range(-128,128): oled.blit(fb,i,0) oled.show()

保存并运行代码。和Thonny中的任何Python脚本一样,点击File >> Save,并将文件以oled-test.py的形式保存到Raspberry Pi Pico中。当准备好了,点击绿色播放按钮开始代码和你的动画将滚动到OLED屏幕。

  • WalexNET
    你好,
    我试图复制你的例子,但我不能让oled显示工作,我已经尝试了几个库,包括你提出的一个,但总是在所有情况下,它抛出我这个错误:

    每当我尝试实例化SSD1306_I2C对象时,就会抛出这个错误

    这是我的简单代码

    从机器进口引脚,I2C
    从时间导入sleep_ms
    从ssd1306导入SSD1306_I2C

    进口framebuf

    安祖辣椒= 128
    ALTO = 64

    PinSDA =销(0)
    PinSCL =销(1)
    地址= 0 x3c

    i2c = i2c (0, sda=PinSDA, scl=PinSCL, freq=400000)
    sleep_ms (100)

    oled = SSD1306_I2C(ANCHO, ALTO, i2c)
    这是它返回给我的错误

    >>> %执行-c $EDITOR_CONTENT命令
    Traceback(最近的调用):
    文件"",第17行,在
    文件"/lib/ssd1306.py",第110行,在__init__
    文件"/lib/ssd1306.py",第36行,在__init__
    文件"/lib/ssd1306.py",第73行,在init_display
    文件"/lib/ssd1306.py",第101行,显示
    文件"/lib/ssd1306.py",第119行,在write_data
    OSError: EIO
    您能告诉我会有什么问题吗?
    非常感谢
    回复
  • 卡纳纳斯基斯做出
    我有同样的问题和错误信息。我认为从PyPl下载的ssd1306.py程序可能有一些问题
    我从微python网站上下载了这个程序,没有出现问题。
    当我用PyPl中的那个替换它时,错误就出现了。

    我的问题是我们如何扩大文本?
    我想显示温度,并希望128 x 64 OLED显示2个大数字,以便更容易读取。
    我不知道如何在这个软件中改变字体大小?
    谢谢,
    罗宾
    回复