当前位置: 代码迷 >> 综合 >> OLED-esp32与python 1
  详细解决方案

OLED-esp32与python 1

热度:72   发布时间:2024-02-01 20:15:46.0

连接

from machine import I2C,Pin
from ssd1306 import SSD1306_I2C
i2c = I2C(scl = Pin(4),sda = Pin(5),freq = 10000) #软件I2C
oled = SSD1306_I2C(128, 64, i2c) #创建oled对象oled.rect(0,0,127,63,1)
oled.show()oled.text("Hello World!",0,0)
oled.show()oled.fill_rect(0, 0, 20, 20, 0)
oled.show()

在这里插入图片描述

代码

framebuf帧缓冲类

绘制原始形状

FrameBuffer.fill (c)
用指定的颜色填充整个FrameBuffer。

FrameBuffer.pixel(x, y[, c])
如果c未给定时,获取指定像素的颜色值。如果c则将指定的像素设置为给定的颜色。

FrameBuffer.hline(x, y, w, c)
FrameBuffer.vline(x, y, h, c)
FrameBuffer.line(X1, Y1, X2, Y2, c)
使用给定的颜色和1像素的厚度,从一组坐标中绘制一条线。这个line方法将直线绘制到第二组坐标,而hline和vline方法在给定的长度范围内分别绘制水平线和垂直线。

FrameBuffer.rect(x, y, w, h, c)
FrameBuffer.fill_rect(x, y, w, h, c)
在给定的位置、大小和颜色绘制矩形。这个rect方法只绘制一个像素轮廓,而fill_rect方法同时绘制轮廓和内部。

绘图文本

FrameBuffer.text(s, x, y[, c])
使用坐标作为文本的左上角将文本写入FrameBuffer。文本的颜色可以由可选参数定义,但否则是默认值1。所有字符的尺寸为8x8像素,目前无法更改字体。

其他方法

FrameBuffer.scroll(XSTEP, 步进)
用给定的向量移动FrameBuffer的内容。这可能会在FrameBuffer中留下以前颜色的足迹。

FrameBuffer.blit(Fbuf, x, y[, 钥匙])
在给定坐标的当前帧的顶部绘制另一个FrameBuffer。如果钥匙然后,它应该是一个颜色整数,相应的颜色将被认为是透明的:所有具有该颜色值的像素都不会被绘制出来。

此方法在使用不同格式的FrameBuffer实例之间工作,但由于颜色格式不匹配,产生的颜色可能是意外的。

常数

framebuf.MONO_VLSB
单色(1位)颜色格式,这定义了一个映射,其中字节中的位是垂直映射的,位0是最接近屏幕顶部的。因此,每个字节占据8个垂直像素。随后的字节出现在连续的水平位置,直到到达最右边的边缘。更多的字节呈现在从最左边的边缘开始的位置,低8个像素。

framebuf.MONO_HLSB
单色(1位)颜色格式–这定义了一个映射,其中字节中的位是水平映射的。每个字节占据8个水平像素,位7是最左边的。随后的字节出现在连续的水平位置,直到到达最右边的边缘。在下一行上呈现更多的字节,比前一行低一个像素。

framebuf.MONO_HMSB
单色(1位)颜色格式–这定义了一个映射,其中字节中的位是水平映射的。每个字节占据8个水平像素,位0是最左边的。随后的字节出现在连续的水平位置,直到到达最右边的边缘。在下一行上呈现更多的字节,比前一行低一个像素。

framebuf.RGB565
红绿蓝(16位,5+6+5)颜色格式

framebuf.GS2_HMSB
灰度(2位)颜色格式

framebuf.GS4_HMSB
灰度(4位)颜色格式

framebuf.GS8
灰度(8位)颜色格式

class SSD1306:#翻转颜色def invert(self, invert):self.write_cmd(SET_NORM_INV | (invert & 1))#填充画面 0为空 1为亮def fill(self, col):self.framebuf.fill(col)#用指定的颜色填充整个FrameBuffer#填充一个像素在X,YE def pixel(self, x, y, col):self.framebuf.pixel(x, y, col)#将指定的像素设置为给定的颜色。#滚动def scroll(self, dx, dy):self.framebuf.scroll(dx, dy)#用给定的向量移动FrameBuffer的内容。#文本def text(self, string, x, y, col=1):self.framebuf.text(string, x, y, col)#线def hline(self, x, y, w, col=1)self.framebuf.hline(x, y, w, col)#显示函数很重要!! 每次执行相应显示功能都需要加上show(),fill(x)除外def show(self):x0 = 0x1 = self.width - 1if self.width == 64:# displays with width of 64 pixels are shifted by 32x0 += 32x1 += 32self.write_cmd(SET_COL_ADDR)self.write_cmd(x0)self.write_cmd(x1)self.write_cmd(SET_PAGE_ADDR)self.write_cmd(0)self.write_cmd(self.pages - 1)self.write_framebuf()    

需ssd1306.py。