“快速響應(yīng)”代碼或縮寫(xiě)為 QR 代碼已成為我們數(shù)字生活的重要組成部分,很可能您現(xiàn)在已經(jīng)潛意識(shí)地熟悉它們,您可能已經(jīng)在當(dāng)?shù)氐碾s貨店漫游,或者您可能正在閱讀你最喜歡的書(shū),甚至可能你正在使用 Google Pay、PhonePe 或 Paytm 進(jìn)行在線(xiàn)支付,或者在網(wǎng)上沖浪等(我想我可以繼續(xù)舉例吧?)而你恰好來(lái)了穿過(guò)這個(gè)看起來(lái)很奇怪的方形的東西,然后想,這個(gè)方形的東西到底是什么,如果你還沒(méi)有……好吧,別擔(dān)心它遲早會(huì)發(fā)生,所以為了更好地理解這個(gè)話(huà)題,我們將做一個(gè)有趣的Arduino 和 OLED小項(xiàng)目,揭開(kāi)以下事物的神秘面紗:
QR 碼的基本概念。
這個(gè)怎么運(yùn)作。
如何使用 Arduino 制作您自己的二維碼。
最后,將其顯示在 OLED (SSD1306) 屏幕上。
那么,這個(gè)二維碼到底是什么?
QR 碼(Quick Response code)是用于高速讀取數(shù)據(jù)的矩陣二維碼,由 DENSO WAVE 于 1994 年為日本汽車(chē)行業(yè)開(kāi)發(fā)。與標(biāo)準(zhǔn)條形碼相比,QR 碼可以非常有效地壓縮數(shù)據(jù),為此它使用四種標(biāo)準(zhǔn)化編碼模式(數(shù)字、字母數(shù)字、字節(jié)/二進(jìn)制和漢字),該技術(shù)是“開(kāi)源”的,即所有人都可以使用,所以QR 碼相對(duì)于傳統(tǒng)條碼的顯著優(yōu)勢(shì)是更大的數(shù)據(jù)容量和高容錯(cuò)性。
二維碼如何工作?
QR 碼(和其他數(shù)據(jù)矩陣碼)被設(shè)計(jì)為由特殊工具讀取,而不是由人類(lèi)讀取,因此我們只能通過(guò)視覺(jué)研究來(lái)理解特定的數(shù)量,盡管每個(gè)代碼都有不同的方式,盡管它們包含一些有趣的共同點(diǎn)通過(guò)觀(guān)察 circuitdigest.com 二維碼的功能,我們將研究其中的一些
Finder Patterns:在代碼的三個(gè)角內(nèi)有一個(gè)實(shí)心框的大方框,因?yàn)橹挥腥齻€(gè),所以很容易確認(rèn)它是一個(gè) QR 碼,所以很明顯代碼的方向是什么。
對(duì)齊模式:這可以確保代碼在任何方向上都是可讀的。
時(shí)序模式:這在三個(gè)查找器模式之間水平和垂直運(yùn)行,使用這些線(xiàn),讀者可以確定代碼的大小。
版本信息:二維碼標(biāo)準(zhǔn)目前有40個(gè)不同的版本,這部分代碼決定了正在使用的二維碼版本,對(duì)于營(yíng)銷(xiāo)版本1-7正常使用。
格式信息:格式合作伙伴有關(guān)于容錯(cuò)和數(shù)據(jù)屏蔽的信息。
數(shù)據(jù)區(qū):這部分代碼包含所有數(shù)據(jù)元素和糾錯(cuò)碼。
退出區(qū):每個(gè) QR 碼中的間距是強(qiáng)制性的,以便將代碼與周?chē)h(huán)境區(qū)分開(kāi)來(lái)。
下圖將使您對(duì)代碼有一個(gè)清晰的認(rèn)識(shí)
代碼的其他部分是數(shù)據(jù)和冗余代碼。
在本教程中我不會(huì)討論許多其他功能和復(fù)雜的主題,如果您想閱讀有關(guān) QR 碼的更多詳細(xì)信息,請(qǐng)關(guān)注 EPCglobal 新加坡理事會(huì) Tan Jin Soon 的這個(gè) QR 碼 教程。綜合雜志,2008 年。
二維碼規(guī)格
生成您自己的二維碼
按照下面提到的步驟生成您自己的二維碼,在這個(gè)例子中,我們將制作我們心愛(ài)的電路文摘網(wǎng)站的二維碼
要生成 QR 碼,請(qǐng)?jiān)L問(wèn)該網(wǎng)站,如果您查看網(wǎng)站的頂部,您可以看到選項(xiàng)列表,在本教程中,我們將為 URL 生成 QR 碼,因此我們將
單擊 URL 選項(xiàng)卡,然后將 Circuit Digest 的 URL 粘貼到 Enter URL 部分。
點(diǎn)擊保存。
為輸出文件指定一個(gè)文件名。
選擇 PNG 作為我們的首選文件格式。
并點(diǎn)擊保存。
下圖將讓您清楚地了解該過(guò)程
我們最親愛(ài)的微控制器“Arduino”不夠智能,它只能編譯原始 PNG 圖像并將其顯示在 OLED 顯示器上。因此,要將 QR 碼顯示到 OLED,我們需要執(zhí)行一些簡(jiǎn)單的步驟,并將PNG 圖像轉(zhuǎn)換為Arduino 可讀的位圖數(shù)組。位圖數(shù)組轉(zhuǎn)換可以通過(guò)以下兩個(gè)步驟完成:
將 PNG 轉(zhuǎn)換為 BMP 格式。
將 BMP 圖像轉(zhuǎn)換為十六進(jìn)制代碼數(shù)組。
將 PNG 轉(zhuǎn)換為 BMP 格式
要將下載的 PNG 圖像轉(zhuǎn)換為 BMP 圖像,請(qǐng)?jiān)L問(wèn)此網(wǎng)站并在圖像轉(zhuǎn)換器部分中,然后
點(diǎn)擊下拉菜單并選擇
轉(zhuǎn)換為 BMP
點(diǎn)擊前往
下圖將使您清楚地了解該過(guò)程:
您將看到一個(gè)新頁(yè)面,如下圖所示:
單擊選擇文件選項(xiàng)卡并選擇下載的圖像
在可選設(shè)置中,面板輸入您想要的尺寸(我們使用的是 128x64 OLED)
點(diǎn)擊開(kāi)始轉(zhuǎn)換按鈕
您將看到以下頁(yè)面,幾秒鐘后,如果下載沒(méi)有自動(dòng)開(kāi)始,您的轉(zhuǎn)換后的圖像將被下載,請(qǐng)單擊下載您的文件選項(xiàng):
偉大的!現(xiàn)在我們得到了 BMP 文件,是時(shí)候?qū)⑵滢D(zhuǎn)換為 Arduino 可讀的 HEX 代碼數(shù)組了。
將 BMP 圖像轉(zhuǎn)換為 HEX 代碼數(shù)組
要將下載的 BMP 圖像轉(zhuǎn)換為 HEX 數(shù)組,請(qǐng)?jiān)L問(wèn)此網(wǎng)站并單擊工具 -》 image2cpp
下圖將讓您清楚地了解該過(guò)程
您將看到一個(gè)包含四個(gè)選項(xiàng)的屏幕,我們將詳細(xì)討論它們
選擇圖片
圖像設(shè)置
預(yù)習(xí)
輸出
選擇圖像部分
在本節(jié)中,我們將選擇剛剛轉(zhuǎn)換為 BMP 的圖像:
圖像設(shè)置部分
在本節(jié)中,我們將畫(huà)布大小、背景顏色、縮放和中心選項(xiàng)設(shè)置為我們需要的值。
畫(huà)布尺寸(我們?cè)O(shè)置為 128x64,因?yàn)槲覀兪褂玫氖?128x64 像素密度的 OLED)。
在本節(jié)中,我們可以設(shè)置 OLED 的背景顏色(我們選擇它為白色)。
縮放設(shè)置為原始大小。
最后,在中心選項(xiàng)中單擊水平和垂直復(fù)選框,這將使圖像出現(xiàn)在中心。
下圖會(huì)給你一個(gè)清晰的思路
預(yù)覽部分
在預(yù)覽部分,我們可以看到將在 OLED 中顯示的圖像的清晰預(yù)覽,如下所示:
輸出部分
在輸出部分,我們將生成并復(fù)制生成的代碼,執(zhí)行以下步驟:
代碼輸出格式(我們將其設(shè)置為 Arduino 代碼,因?yàn)槲覀兪褂玫氖且环N)。
標(biāo)識(shí)符(此選項(xiàng)設(shè)置生成的數(shù)組的名稱(chēng),我們將其保留為默認(rèn)值)。
繪圖模式(我們將繪圖模式選項(xiàng)設(shè)置為水平)。
最后,我們點(diǎn)擊生成代碼按鈕,這將生成最終的輸出代碼。
下圖會(huì)給你一個(gè)清晰的思路
電路原理圖
下圖顯示了Arduino Nano 和 SSD1306之間的接口連接:
代碼說(shuō)明
要在 OLED 上顯示圖像,我們需要 Arduino 庫(kù)的幫助,可以從這個(gè)GitHub 存儲(chǔ)庫(kù)下載。下載庫(kù)的U8glib-1.19.1.zip版本并在 Arduino IDE 中導(dǎo)入。如果您是 Arduino 新手,請(qǐng)參考此鏈接,描述如何導(dǎo)入庫(kù)。在下面的部分中,我們將修改代碼以將先前生成的 HEX 數(shù)組顯示到 OLED。本文末尾提供了帶有工作視頻的完整代碼。下面給出代碼的詳細(xì)解釋。
首先,包括下載的庫(kù)。
#include "U8glib.h" // 包括 U8glib 庫(kù)
然后為 OLED 定義所有必要的引腳。
#define OLED_CLK_PIN 13 //Arduino 數(shù)字引腳 D13:SCK #define OLED_MOSI_PIN 11 //Arduino 數(shù)字引腳 D11:MOSI #define OLED_RES_PIN 10 //Arduino 數(shù)字引腳 D10:SS #define OLED_SDC_PIN 9 //Arduino 數(shù)字引腳 D9:OC1A #define OLED_CSS_PIN 8 //Arduino 數(shù)字引腳 D13: ICP1
初始化 u8glib 庫(kù)。
U8GLIB_SH1106_128X64 u8g(OLED_CLK_PIN,OLED_MOSI_PIN,OLED_RES_PIN,OLED_SDC_PIN,OLED_CSS_PIN);
然后包含生成的圖像數(shù)組。
const uint8_t circuitdigest[] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1c, 0x01, 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0x01, 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x31, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x81, 0x8f, 0x31, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0x31, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xb1, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc1, 0x98, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc1, 0x98, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, …….. …………..
繪圖函數(shù)用于借助 u8g.drawBitmapP 函數(shù)在 OLED 上繪制位圖圖像(二維碼)。
無(wú)效繪制(無(wú)效){ // 重繪整個(gè)屏幕的圖形命令應(yīng)該放在這里 u8g.drawBitmapP(0, 0, 16, 64, 電路摘要); …… ……
最后,在loop()函數(shù)中,調(diào)用所有必要的程序在 OLED 上構(gòu)建圖像
無(wú)效循環(huán)(){ u8g.firstPage(); //調(diào)用此過(guò)程,標(biāo)志著圖片循環(huán)的開(kāi)始。 做 { 畫(huà)(); } 而(u8g.nextPage());// 對(duì)該過(guò)程的調(diào)用,標(biāo)志著圖片循環(huán)主體的結(jié)束。 // 延遲一段時(shí)間后重建圖片 延遲(1000); }
完成代碼后,將Arduino插入計(jì)算機(jī)的USB端口,選擇您的COM端口并上傳代碼。如果您已正確完成所有操作,您將在 OLED 上看到帶有 QR 碼的工作顯示器。
/*
通用 8 位圖形庫(kù),http://code.google.com/p/u8glib/
*/
#include "U8glib.h" // 包括 U8glib 庫(kù)
#define OLED_CLK_PIN 13 //Arduino 數(shù)字引腳 D13:SCK
#define OLED_MOSI_PIN 11 //Arduino 數(shù)字引腳 D11:MOSI
#define OLED_RES_PIN 10 //Arduino 數(shù)字引腳 D10:SS
#define OLED_SDC_PIN 9 //Arduino 數(shù)字引腳 D9:OC1A
#define OLED_CSS_PIN 8 //Arduino 數(shù)字引腳 D13: ICP1
U8GLIB_SH1106_128X64 u8g(OLED_CLK_PIN,OLED_MOSI_PIN,OLED_RES_PIN,OLED_SDC_PIN,OLED_CSS_PIN);
/*
制作 U8GLIB_SH1106_128X64 類(lèi)的對(duì)象并初始化 arduino 的引腳
此方法首先需要五個(gè)參數(shù)(SCK_PIN、MOSI_PIN、CS_PIN、A0_pin、RESET_PIN)
*/
//定制的電路摘要位圖
const uint8_t circuitdigest[] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1c, 0x01, 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0x01, 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x31, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x81, 0x8f, 0x31, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0x31, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xb1, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc1, 0x98, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc1, 0x98, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc0, 0x67, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc0, 0x67, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0x31, 0xe7, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0x31, 0xe7, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0xce, 0x67, 0x30, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0xce, 0x67, 0x30, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x1c, 0x4e, 0x27, 0x38, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3e, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3e, 0x1e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xe1, 0x8f, 0x3e, 0x60, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xe1, 0x8f, 0x3e, 0x60, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0xf0, 0xcf, 0xf8, 0xfc, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0xf0, 0xcf, 0xf8, 0xfc, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0x83, 0x3e, 0x00, 0xcc, 0x67, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0x83, 0x3e, 0x00, 0xcc, 0x67, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x7c, 0xff, 0xc3, 0xf1, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x7c, 0xff, 0xe7, 0xf3, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x7c, 0xff, 0xe7, 0xf1, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xf9, 0x8f, 0x0e, 0x78, 0xf0, 0x7f, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xf9, 0x8f, 0x0e, 0x78, 0xf0, 0x7f, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x19, 0xf3, 0xce, 0x18, 0x0f, 0x9e, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x19, 0xe3, 0xce, 0x18, 0x0f, 0x9e, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0x83, 0x0f, 0x80, 0xf3, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0x83, 0x0f, 0x80, 0xf3, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf1, 0xc7, 0xe0, 0xf3, 0xe3, 0x7c, 0x40, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xe7, 0xf0, 0xf1, 0xe7, 0x3c, 0x61, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xe7, 0xf0, 0xf9, 0xe7, 0x3c, 0x60, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x19, 0x8c, 0x3e, 0x07, 0x00, 0x18, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x39, 0x9c, 0x3e, 0x07, 0x00, 0x18, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3e, 0x1f, 0x3f, 0x98, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3e, 0x1f, 0x3f, 0x98, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0x01, 0xff, 0x33, 0x9f, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0f, 0x01, 0xff, 0x33, 0x9f, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x8f, 0xc7, 0x80, 0x3f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xcf, 0x80, 0x3f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xcf, 0x80, 0x3f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8c, 0x30, 0x60, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8c, 0x30, 0x60, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8c, 0xf1, 0xe0, 0x03, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8c, 0xf1, 0xe0, 0x03, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc1, 0x83, 0xcf, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc1, 0x87, 0xcf, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8c, 0xff, 0xe1, 0xc0, 0x18, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8c, 0xff, 0xe0, 0xc0, 0x18, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0x8c, 0xff, 0xf0, 0xc0, 0x18, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0x0e, 0x7f, 0x3f, 0xe7, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1c, 0x0e, 0x7f, 0x3f, 0xe7, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
無(wú)效繪制(無(wú)效){
// 重繪整個(gè)屏幕的圖形命令應(yīng)該放在這里
u8g.drawBitmapP(0, 0, 16, 64, 電路摘要);
/*
drawBitmapP 方法接受五個(gè)參數(shù)
第一個(gè):X 位置(位圖的左側(cè)位置)。
第二:Y 位置(位圖的上方位置)。
第三:位圖水平方向的字節(jié)數(shù)。位圖的寬度為 cnt/8。
第四:位圖的高度。
第五:位圖數(shù)組。
*/
/*
在指定的 x/y 位置(位圖的左上角)繪制位圖。
位圖的某些部分可能在顯示邊界之外。位圖由數(shù)組位圖指定。
清零位表示:不繪制像素。
數(shù)組中的一個(gè)設(shè)置位意味著:用當(dāng)前顏色索引寫(xiě)入像素。對(duì)于單色顯示,
顏色索引 0 通常會(huì)清除一個(gè)像素,顏色索引 1 會(huì)設(shè)置一個(gè)像素。
*/
}
無(wú)效設(shè)置(){
// 空設(shè)置函數(shù),因?yàn)閹?kù)在內(nèi)部管理所有內(nèi)容
}
無(wú)效循環(huán)(){
u8g.firstPage(); //調(diào)用此過(guò)程,標(biāo)志著圖片循環(huán)的開(kāi)始。
做 {
畫(huà)();
} 而(u8g.nextPage());// 對(duì)該過(guò)程的調(diào)用,標(biāo)志著圖片循環(huán)主體的結(jié)束。
// 延遲一段時(shí)間后重建圖片
延遲(1000);
}
-
二維碼
+關(guān)注
關(guān)注
7文章
454瀏覽量
27220 -
Arduino
+關(guān)注
關(guān)注
189文章
6495瀏覽量
190476 -
OLED顯示
+關(guān)注
關(guān)注
1文章
57瀏覽量
17260 -
SSD1306
+關(guān)注
關(guān)注
3文章
40瀏覽量
13999
發(fā)布評(píng)論請(qǐng)先 登錄
SSD1306的相關(guān)資料分享
SSD1306芯片介紹
STM32 單片機(jī)字符串生成二維碼顯示相關(guān)資料分享
基于SSD1306的OLED開(kāi)發(fā)模塊
二維碼在智能門(mén)禁中的應(yīng)用,二維碼門(mén)禁如何保證安全性

SSD1306(OLED驅(qū)動(dòng)芯片介紹)

STM32 單片機(jī)字符串生成二維碼顯示

使用Arduino代碼和SSD1306顯示器創(chuàng)建動(dòng)態(tài)二維碼

SSD1306 OLED上的ESP8266 NTP時(shí)鐘

SSD1306 OLED顯示屏上的Arduino Flash文本

Arduino在SSD1306 OLED顯示屏上隨機(jī)移動(dòng)文本

評(píng)論