樹莓派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_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.pswp.cn/diannao/44668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44668.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

get和 post的區別

get 是從服務器上獲取數據&#xff0c;post 是向服務器傳送數據。POST 比 GET 安全&#xff0c;因為數據在地址欄上不可見。 3.了解get 方式提交的數據最多只能有 1024 字節&#xff0c;而 post 則沒有此限制。 4.GET 使用 URL 或 Cookie 傳參。而 POST 將數據放在 request BOD…

類和對象——【運算符重載】

P. S.&#xff1a;以下代碼均在VS2019環境下測試&#xff0c;不代表所有編譯器均可通過。 P. S.&#xff1a;測試代碼均未展示頭文件iostream的聲明&#xff0c;使用時請自行添加。 博主主頁&#xff1a;Yan. yan. ??????????????????? ?? …

【vueUse庫Reactivity模塊各函數簡介及使用方法--中篇】

vueUse庫是一個專門為Vue打造的工具庫,提供了豐富的功能,包括監聽頁面元素的各種行為以及調用瀏覽器提供的各種能力等。其中的Browser模塊包含了一些實用的函數,以下是這些函數的簡介和使用方法: vueUse庫Sensors模塊各函數簡介及使用方法 vueUseReactivity函數1. reactiv…

宏任務與微任務對比【前端異步】

目錄 簡介微任務與宏任務的基本概念宏任務&#xff08;Macrotasks&#xff09;微任務&#xff08;Microtasks&#xff09;宏任務示例微任務示例微任務與宏任務的執行時序 結論 簡介 在JavaScript的異步編程中&#xff0c;理解事件循環&#xff08;Event Loop&#xff09;是至關…

Autogen和Crewai的對比

AutoGen和CrewAI是兩種用于開發人工智能Agent應用的框架&#xff0c;各有其獨特的特性和優勢。以下是對這兩者的詳細對比&#xff1a; 共同點 編程語言&#xff1a;兩者都使用Python編程語言。應用領域&#xff1a;都用于創建人工智能Agent應用程序。多代理對話&#xff1a;都…

Qt+MySQL實現社團管理系統

開發環境 ● Qt 5.14.1 ● Win10 ● Mysql 5.7.28 系統介紹 系統主要實現的功能如下圖所示 社團管理系統主要包含了以下幾個亮點功能 輪播圖顯示社團信息支持excel形式的導入導出學生信息權限控制&#xff08;管理員、超級管理員、用戶&#xff09; 系統效果展示 登錄界面…

AI學習指南機器學習篇-層次聚類合并策略

AI學習指南機器學習篇-層次聚類合并策略 在機器學習領域&#xff0c;層次聚類&#xff08;Hierarchical Clustering&#xff09;是一種常用的聚類方法&#xff0c;它通過不斷合并相似的聚類來構建聚類層次結構。在層次聚類中&#xff0c;聚類合并策略是非常關鍵的一環&#xf…

前端工程化(01):Webpack、Gulp、Grunt三大自動化構建工具對比

10年前端開發和UI設計老司機→貝格前端工場&#xff0c;為您分享。本期介紹三款自動化構建工具&#xff0c;看看他們的工作原理和差異化&#xff0c;幫助你來選擇。 Webpack、Gulp和Grunt都是前端構建工具&#xff0c;用于優化前端開發流程和提高開發效率。它們都可以自動化執…

c++ 的(引用)和*(指針)

在C中&#xff0c;&&#xff08;引用&#xff09;和*&#xff08;指針&#xff09;在函數參數中的使用有各自的特點和用途。下面是它們的具體使用方式以及它們之間的一些區別&#xff1a; 引用&#xff08;&&#xff09; 使用方式: 引用作為函數參數時&#xff0c;可…

Java8新語法

一、Java8新特性 JDK 8 正式版在 2013 年 9 月份發布。 Java8主要內容Lambda表達式函數式接口方法引用與構造器引用Stream API接口中的默認方法與靜態方法新時間日期API其他新特性Java8新特性簡介: 速度更快代碼更少(增加了新的Lambda表達式)強大的Stream API便于并行最大化減少…

c++棧內存和堆內存的基本使用

c棧內存和堆內存的基本使用 #include <iostream>// 定義一個簡單的結構體 struct Person {std::string name;int age; };int main() {// 棧內存分配int a 10; // 基本數據類型的棧內存分配Person person; // 結構體的棧內存分配person.name "John";person.a…

構建未來對話:從零開始實現基于Vue 3的AI聊天頁面

大家好&#xff0c;今天我們將一起探索如何從零開始&#xff0c;使用Vue 3構建一個AI對話頁面。這個過程不僅會讓我們了解Vue 3的新特性&#xff0c;還會讓我們對構建交互式Web應用有一個全新的認識。如果你是編程新手&#xff0c;別擔心&#xff0c;我會用通俗易懂的語言&…

【Linux命令基礎】vim的簡介

文章目錄 前言如何在Ubuntu中安裝VimVim的作用Vim的優勢vim的模式總結前言 在Linux環境中,我們經常需要編輯文本文件,無論是編寫代碼,還是修改配置文件。而在這些場景中,Vim編輯器無疑是我們的得力助手。Vim是從vi發展出來的一個文本編輯器,代碼補全、編譯及錯誤跳轉等方…

HarmonyOS(43) @BuilderParam標簽使用指南

BuilderParam BuilderParam使用舉例定義模板定義具體實現BuilderParam初始化 demo源碼參考資料 BuilderParam 該標簽有的作用有點類似于設計模式中的模板模式&#xff0c;類似于指定一個UI占位符&#xff0c;具體的實現交給具體的Builder&#xff0c;顧名思義&#xff0c;可以…

SpringBoot項目架構實戰之“網關zuul搭建“

第三章 網關zuul搭建 前言&#xff1a; 1、主要功能 zuul主要提供動態路由&#xff08;內置ribbon實現&#xff09;和過濾&#xff08;可以做統一鑒權過濾器、灰度發布過濾器、黑白名單IP過濾器、服務限流過濾器&#xff08;可以配合Sentinel實現&#xff09;&#xff09;功能…

學會創建虛擬網卡

此電腦-----管理 一直點擊下一頁 選擇網絡適配器 選擇Microsoft----Microsoft KM-TEST環回適配器 然后點擊下一頁 完成的界面如下&#xff1a; 手動改IP

Git分支結構

目錄 1. 線性分支結構 2. 分叉與合并結構 3. 分支與標簽的關系 4. 并行開發與分支管理策略 測試&#xff08;本機系統為Rocky_linux9.4&#xff09; 合并失敗解決 刪除分支 刪除本地分支 刪除遠程分支 Git 中的分支結構是版本控制中非常重要的概念之一&#xff0c;它描…

政安晨:【Keras機器學習示例演繹】(五十四)—— 使用神經決策森林進行分類

目錄 導言 數據集 設置 準備數據 定義數據集元數據 為訓練和驗證創建 tf_data.Dataset 對象 創建模型輸入 輸入特征編碼 深度神經決策樹 深度神經決策森林 實驗 1&#xff1a;訓練決策樹模型 實驗 2&#xff1a;訓練森林模型 政安晨的個人主頁&#xff1a;政安晨 歡…

Python | Leetcode Python題解之第228題匯總區間

題目&#xff1a; 題解&#xff1a; class Solution:def summaryRanges(self, nums: List[int]) -> List[str]:def f(i: int, j: int) -> str:return str(nums[i]) if i j else f{nums[i]}->{nums[j]}i 0n len(nums)ans []while i < n:j iwhile j 1 < n …

Codeforces Round #956 (Div. 2) and ByteRace 2024 E. I Love Balls(概率期望)

題目 思路來源 官方題解 題解 特殊球不會改變普通球的順序&#xff0c;所以都是alice拿一半里較多的部分 n-k1一半向上取整就是(n-k2)/2&#xff0c;同理n-k個一般向上取整(n-k1)/2 每個特殊球獨立地來看&#xff0c;在每個空隙的概率相同 所以分別統計特殊球和非特殊球的…