树莓派pico入坑笔记,ssd1306使用

目录

说明

后附进阶玩法:显示中文,外加简单库实现

官方模块使用

使用样例

方法说明

下面是绘图支持的方法

进阶玩法,显示中文

方法,对汉字取字模,然后按像素对字模进行显示


说明

circuitpython8.x使用iic接口驱动四线1306屏幕,屏幕参数128x64,由于屏幕是单色,所以衍射只用两种,程序涉及的颜色参数统一为:1白色,0黑色

后附进阶玩法:显示中文,外加简单库实现

需要的库博主已经上传

官方模块使用

使用样例

framebuf、ssd1306、font5x8三个文件需要上传到指定位置,font16x16ch为进阶玩法需要额外引入的文件,正常使用时不需要该文件

样例代码

import board
import busio
import adafruit_ssd1306

# Create the I2C bus interface.
#i2c = board.I2C()  # uses board.SCL and board.SDA,return busio.I2C singal obj
i2c = busio.I2C(board.GP1, board.GP0)    # Pi Pico RP2040

# Create the SSD1306 OLED class.
display_width = 128
display_height = 64
display = adafruit_ssd1306.SSD1306_I2C(display_width, display_height, i2c)
# You can change the I2C address with an addr parameter:
# display = adafruit_ssd1306.SSD1306_I2C(display_width, display_height, i2c, addr=0x31)

# fills display with black pixels clearing it
display.fill(0)
display.show()

# Set a pixel in the origin 0,0 position.
display.pixel(0, 0, 1)
# Set a pixel in the middle 64, 16 position.
display.pixel(64, 16, 1)
# Set a pixel in the opposite 127, 31 position.
display.pixel(127, 31, 1)
display.text('hello,wrld',50,0,1)
display.show()

效果

方法说明

i2c = busio.I2C(board.GP1, board.GP0) 指定使用的SCL和SDA引脚,参数格式(SCL,SDA)

display_width = 128

display_height = 64

display = adafruit_ssd1306.SSD1306_I2C(display_width, display_height, i2c)初始化屏幕对象,如果报错找不到设备,可以在后面的addr参数设置iic逻辑地址

# You can change the I2C address with an addr parameter:
# display = adafruit_ssd1306.SSD1306_I2C(display_width, display_height, i2c, addr=0x31)


display.fill(0)设置全屏黑色,参数列表:(颜色)

display.show()显示效果生效,注意如果在绘制屏幕后不使用show,显示效果不生效,fill方法除外

下面是绘图支持的方法

rotation显示器属性的旋转设置,可以是(0、1、2、3)之一,缺省设置值为0

display.rotation=0默认参数为0

circle(center_x, center_y, radius, color)在给定的中点位置、半径和颜色处画一个圆。 该方法仅绘制 1 像素的轮廓

fill(color)用指定的颜色填充

hline(x, y, width, color)从起始坐标(x,y)绘制一条水平线,直至给定长度width

vline(x, y, height, color)绘制一条起点为(x,y)的垂直线,直至给定长度width

line(x_0, y_0, x_1, y_1, color)绘制一条起点到终点的线段

pixel(x, y, color)将指定的像素设置为给定的颜色

rect(x, y, width, height, color, *, fill=False)在给定的位置、大小和颜色处绘制一个矩形。该方法仅绘制一个1像素的轮廓,fill值确定是否填充内部,缺省不填充

scroll(delta_x, delta_y)在 x 和 y 方向上移动 framebuf,注意只是将源buf参数进行偏移,源位置的像素参数并没有被刷新

text(string, x, y, color, *, font_name='font5x8.bin', size=1)将文本以可变大小放置在起点为(x,y)的屏幕上,文本大小size缺省值为1,字体库font_name缺省为font5x8,文本内部支持转义字符’\n'换行


进阶玩法,显示中文

方法,对汉字取字模,然后按像素对字模进行显示

取模方法,在线取模网站,本文的字模配置:尺寸为16x16,字节大小8bit,字高16,每字占2列,字体宋体abc。

后面编写的库基于该字体尺寸,针对128x64尺寸1306屏幕定制,读者可自行修改以使用其他尺寸,本库支持最大8x4共32个汉字显示,下面是对库文件的函数说明

Ssd130yan28x64_Init(SDA: Pin,SCL: Pin)

功能:初始化并返回一个1306iic对象,参数(board.SDA,board.SCL)

Decode16x16_Bytes_To_Pixel(data: tuple,x: int,y: int)

功能:显示字模到屏幕上,data字模数组为一维数组,支持单行显示数组包含的多个字模数据,单行最大8字

Draw_Sent(word: str,x: int,y: int)

功能:显示指定字符串中文到屏幕,支持自动换行,最大支持显示32字符,多出部分不显示

模块导入同上图配置

样例代码

import board
import busio
import adafruit_ssd1306
from font16x16ch import Ssd1306_128x64_Init,Decode16x16_Bytes_To_Pixel,Draw_Sent

display=Ssd1306_128x64_Init(board.GP0,board.GP1)
# Decode16x16_Bytes_To_Pixel(data,x=0,y=0)
Draw_Sent('锲而不舍金石可镂',0,0)
# for i in range(8):
#     display.pixel(i,0,0x21 & 1<<(7-i))
display.show()

可以调用Decode16x16_Bytes_To_Pixel绘制,但是注意不能超过7字,不然会因为变量太大导致栈溢出

data=(  0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 
    0x00, 0x00, 0x1f, 0xf0, 0x10, 0x84, 0x7f, 0xfc, 
    0x00, 0x00, 0x10, 0x10, 0x10, 0x84, 0x02, 0x00, 
    0x00, 0x00, 0x10, 0x10, 0x10, 0x84, 0x04, 0x00, 
    0x00, 0x00, 0x10, 0x10, 0x10, 0x84, 0x1f, 0xf0, 
    0x00, 0x00, 0x10, 0x10, 0x10, 0x84, 0x10, 0x10, 
    0x00, 0x00, 0x10, 0x10, 0x10, 0x84, 0x11, 0x10, 
    0xff, 0xfe, 0x10, 0x10, 0x10, 0x84, 0x11, 0x10, 
    0x00, 0x00, 0x1f, 0xf0, 0x10, 0x84, 0x11, 0x10, 
    0x00, 0x00, 0x10, 0x10, 0x10, 0x84, 0x11, 0x10, 
    0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x11, 0x10, 
    0x00, 0x00, 0x08, 0x20, 0x10, 0x84, 0x12, 0x90, 
    0x00, 0x00, 0x08, 0x10, 0x20, 0x84, 0x02, 0x40, 
    0x00, 0x00, 0x10, 0x08, 0x20, 0x84, 0x04, 0x20, 
    0x00, 0x00, 0x20, 0x04, 0x40, 0x04, 0x18, 0x10, 
    0x00, 0x00, 0x40, 0x04, 0x80, 0x04, 0x60, 0x08)
import board
import busio
import adafruit_ssd1306
from font16x16ch import Ssd1306_128x64_Init,Decode16x16_Bytes_To_Pixel,Draw_Sent

display=Ssd1306_128x64_Init(board.GP0,board.GP1)
Decode16x16_Bytes_To_Pixel(data,x=0,y=0)
# Draw_Sent('锲而不舍金石可镂',0,0)

display.show()

相关推荐

  1. 树莓pico笔记,at24c256使用

    2024-07-11 04:54:03       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 04:54:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 04:54:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 04:54:03       57 阅读
  4. Python语言-面向对象

    2024-07-11 04:54:03       68 阅读

热门阅读

  1. python3记录拨号光纤公网IP

    2024-07-11 04:54:03       18 阅读
  2. uniapp小程序使用webview 嵌套 vue 项目

    2024-07-11 04:54:03       24 阅读
  3. iOS 开发中,异步渲染和异步绘制

    2024-07-11 04:54:03       19 阅读
  4. 请求被中止: 未能创建 SSL/TLS 安全通道

    2024-07-11 04:54:03       22 阅读
  5. 【LeetCode】字母异位词分组

    2024-07-11 04:54:03       20 阅读
  6. mybatis-plus树递归结构

    2024-07-11 04:54:03       22 阅读
  7. 一次业务的批量数据任务的处理优化

    2024-07-11 04:54:03       18 阅读
  8. 力扣之有序链表去重

    2024-07-11 04:54:03       25 阅读
  9. PyTorch DataLoader 学习

    2024-07-11 04:54:03       17 阅读
  10. 微生活服务平台与元宇宙的融合

    2024-07-11 04:54:03       20 阅读
  11. C++ 入门05:类和对象

    2024-07-11 04:54:03       26 阅读
  12. mysqli 与mysql 区别和联系, 举例说明

    2024-07-11 04:54:03       24 阅读
  13. SQL Server镜像与日志:数据保护的双重保障

    2024-07-11 04:54:03       19 阅读