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

目录

关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏

说明

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

官方模块使用

使用样例

方法说明

下面是绘图支持的方法

进阶玩法,显示中文

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


关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏

说明

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

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

需要的库adafruit_framebuf、adafruit_ssd1306、font5x8,在这里下载,记得导入pico内

官方模块使用

使用样例

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_Sentdisplay=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_Sentdisplay=Ssd1306_128x64_Init(board.GP0,board.GP1)
Decode16x16_Bytes_To_Pixel(data,x=0,y=0)
# Draw_Sent('锲而不舍金石可镂',0,0)display.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/376852.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣经典题目之->移除值为val元素的讲解,的实现与讲解

一&#xff1a;题目 博主本文将用指向来形象的表示下标位的移动。 二&#xff1a;思路 1&#xff1a;两个整形&#xff0c;一个start&#xff0c;一个end&#xff0c;在一开始都 0&#xff0c;即这里都指向第一个元素。 2&#xff1a;在查到val之前&#xff0c;查一个&…

基于SSM的校园一卡通管理系统的设计与实现

摘 要 本报告全方位、深层次地阐述了校园一卡通管理系统从构思到落地的整个设计与实现历程。此系统凭借前沿的 SSM&#xff08;Spring、Spring MVC、MyBatis&#xff09;框架精心打造而成&#xff0c;旨在为学校构建一个兼具高效性、便利性与智能化的一卡通管理服务平台。 该系…

聚观早报 | 网宿科技推出边缘AI网关;AMD再收购AI公司

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 7月12日消息 网宿科技推出边缘AI网关 AMD再收购AI公司 谷歌Pixel 9系列将配超声波指纹 三星Galaxy Z Fold6亮相 …

[线性RNN系列] Mamba: S4史诗级升级

前言 iclr24终于可以在openreview上看预印本了 这篇&#xff08;可能是颠覆之作&#xff09;文风一眼c re组出品&#xff1b;效果实在太惊艳了&#xff0c;实验相当完善&#xff0c;忍不住写一篇解读分享分享。 TL;DR &#xff08;overview&#xff09; Structured State-Sp…

【TOOLS】Chrome扩展开发

Chrome Extension Development 1. 入门教程 入门案例&#xff0c;可以访问【 谷歌插件官网官方文档 】查看官方入门教程&#xff0c;这里主要讲解大概步骤 Chrome Extenson 没有固定的脚手架&#xff0c;所以项目的搭建需要根据开发者自己根据需求搭建项目&#xff08;例如通过…

机器学习基本概念,Numpy,matplotlib和张量Tensor知识进一步学习

机器学习一些基本概念&#xff1a; 监督学习 监督学习是机器学习中最常见的形式之一&#xff0c;它涉及到使用带标签的数据集来训练模型。这意味着每条训练数据都包含输入特征和对应的输出标签。目标是让模型学会从输入到输出的映射&#xff0c;这样当给出新的未见过的输入时…

vue学习day09-自定义指令、插槽

29、自定义指令 &#xff08;1&#xff09;概念&#xff1a;自己定义的指令&#xff0c;可以封装一些dom操作&#xff0c;扩展额外的功能。 &#xff08;2&#xff09;分类&#xff1a; 1&#xff09;全局注册 2&#xff09;局部注册 3&#xff09;示例&#xff1a; 让表…

Android Studio启动报错:The emulator process for AVD Pixel_5_API_30 has terminated

Android Studio启动AVD报错&#xff1a; The emulator process for AVD Pixel_5_API_30 has terminated. 原因&#xff1a;安装时使用自定义安装后&#xff0c;修改了默认安装目录。 而avd文件默认在 C:\Users\用户名\.android 目录下。所以导致打开AVD时报错。 解决方法&am…

RABBITMQ的本地测试证书生成脚本

由于小程序要求必须访问wss的接口&#xff0c;因此需要将测试环境也切换到https&#xff0c;看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子&#xff0c;把要求输入几个来回&#xff0c;得到这样一个脚本&#xff1a; generate_cer…

几何建模-Parasolid中GO功能使用

1.背景介绍 1.1 Parasolid和它的接口间关系 1.2 什么是GO GO全称是Graphical Output.你的程序需要在屏幕或者打印设备上显示模型数据时。在需要使用PK中的某个渲染函数时创建图形显示数据时&#xff0c;Parasolid会调用GO相关的函数。GO函数会输出绘图指令给你的应用程序提供…

主机安全-进程、命令攻击与检测

目录 概述反弹shell原理nc/dev/xxx反弹shell下载不落地反弹Shell各种语言反弹shell linux提权sudosuid提权mysql提权 Dnslog参考 概述 本文更新通过在主机&#xff08;不含容器&#xff09;上直接执行命令或启动进程来攻击的场景。检测方面以字节跳动的开源HIDS elkeid举例。每…

Nignx配置

Nginx配置之nginx.conf文件解析及配置 1、nginx.conf文件解析 user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on; }http {### Basic Settings###开启文件的高效传输…

Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门

参考文章 【Docker安装部署KafkaZookeeper详细教程】_linux arm docker安装kafka-CSDN博客 Docker搭建kafkazookeeper 打开我们的docker的镜像源配置 vim /etc/docker/daemon.json 配置 { "registry-mirrors": ["https://widlhm9p.mirror.aliyuncs.com"…

全面升级的对象创建——抽象工厂模式(Python实现和JAVA实现)

1. 引言 大家好&#xff01;在之前的文章中&#xff0c;我们探讨了简单工厂和工厂方法模式&#xff1a; 轻松创建对象——简单工厂模式&#xff08;Python实现&#xff09; 轻松创建对象——简单工厂模式&#xff08;Java实现&#xff09; 灵活多变的对象创建——工厂方法模式…

20240711每日消息队列-------------MQ消息的积压的折磨

目标 解决MQ消息的积压 背景 菜馆系统----------- 系统读取消息&#xff0c;处理业务逻辑&#xff0c;持久化订单和菜品数据&#xff0c;然后将其显示在菜品管理客户端上。 最初我们的用户基数很小&#xff0c;上线后的一段时间内&#xff0c;MQ消息通信还算顺利。 随着用户…

k8s(五)---名称空间

五、名称空间 名称空间是k8s划分不同工作空间的逻辑单位,是k8s资源逻辑隔离的机&#xff0c;。可以给不同的租户&#xff0c;不同的环境、不同的项目创建对应的命名空间。 1、查看名称空间 kubectl get ns kubectl get namespaces 此处展示了四个命名空间 2、管理名称空间 1…

Matlab-Simulink模型保存为图片的方法

有好多种办法将模型保存为图片&#xff0c;这里直接说经常用的 而且贴到Word文档中清晰、操作简单。 simulink自带有截图功能&#xff0c;这两种方法都可以保存模型图片。选择后直接就复制到截切板上了。直接去文档中粘贴就完事了。 这两个格式效果不太一样&#xff0c;第一种清…

[Java IO] 文件的概念与相关操作

一 概念 什么是文件&#xff1f; 文件就是保存数据的地方。 二 文件流 文件在程序中是以流的形式来操作的。 流——数据在数据源&#xff08;文件&#xff09;和程序&#xff08;内存&#xff09;之间经历的路径。 输入流&#xff1a;数据从数据源&#xff08;文件&#…

算法学习day12(动态规划)

一、不同的二叉搜索树 二叉搜索树的性质&#xff1a;父节点比左边的孩子节点都大&#xff1b;比右边的孩子节点都小&#xff1b; 由图片可知&#xff0c;dp[3]是可以由dp[2]和dp[1]得出来的。(二叉搜索树的种类和根节点的val有关) 当val为1时&#xff0c;左边是一定没有节点的…

React18+Redux+antd 项目实战 JS

React18Reduxantd 项目实战 js Ant Design插件官网 Axios官网 (可配置请求拦截器和响应拦截器) JavaScript官网 Echarts官网 一、项目前期准备 1.创建新项目 hotel-manager npx create-react-app hotel-manager2.安装依赖 //安装路由 npm i react-router-domnpm i aixos /…