ESP32 Arduino SSD1306 OLED教程:绘制二维码-Arduino中文社区 - Powered by Discuz! Archiver

dfrobot 发表于 2019-6-5 18:04

ESP32 Arduino SSD1306 OLED教程:绘制二维码

本帖最后由 dfrobot 于 2019-5-30 21:50 编辑

简介本文旨在解释如何使用ESP32开发板的Arduino核心在SSD1306 OLED显示屏上绘制QR码。您可以查看以前的帖子,了解如何通过ESP32安装与OLED交互所需的库,以及如何开始整个过程。它还包括ESP32和SSD1306之间的电气接线图。此外,我们需要一个能够为我们生成QR码的库,这里您可以查看GitHub。尽管如此,最简单的安装方法是通过Arduino IDE库管理器,如下图1所示。您只需在库管理器搜索栏中搜索“SSD1306 QRCode”并安装下面显示的库。


http://mc.dfrobot.com.cn/data/attachment/forum/201905/13/182930s4uulc7am45c972h.png图1- 安装QR代码库。

请注意,尽管该库仅引用了针对ESP8266的支持,但是它能够在ESP32开发板上运行。对于某些版本的Arduino IDE,它会在编译过程中逐渐减弱,因为该库仅声称支持ESP8266架构,但是您可以放心地忽略它。本教程使用了Elecrow的OLED版本。显示器可以在这里购买。它还能够作为此入门套件的重要内容。使用的ESP32板型号是NodeMCU。

代码本教程的代码非常简单,因为OLED和QR代码库都提供了高级API,使我们能够轻松与显示器进行交互,而无需担心更复杂的低级细节。因此,我们从它所包含的库开始。我们需要Wire.h库,这是I2C功能所需的库,因为这是我们用来与ESP32的OLED显示器交互的协议。我们还需要SSD1306.h库,以便访问向显示器发送命令所需的所有功能。最后,我们需要安装qrcode.h库,它公开了绘制QR代码所需的方法。

#include <Wire.h>
#include "SSD1306.h"
#include <qrcode.h>

接下来,我们需要声明SSD1306类实例,该实例公开了与显示器实现基本交互的各种方法,例如初始化和显示内容。作为此类构造函数的首个参数,我们需要传递设备的I2C地址,即0x3c。作为第二和第三个参数,我们需要传递我们正在使用的I2C SDA和SDL引脚。根据前一个教程的接线图,我们分别使用ESP32的21和22号引脚。

SSD1306 display(0x3c, 21, 22);

我们还需要声明QRcode类对象,它将公开初始化和创建QR代码所需的各种方法。该类构造函数接收我们刚刚创建的显示对象的引用作为输入内容。
QRcode qrcode (&display);
现在转到Arduino设置函数,我们将在显示对象上调用init方法初始化SSD1306。
display.init();
我们还需要在qrcode对象上调用init方法对它进行初始化。qrcode.init();最终为了显示QR码,我们只需调用qrcode对象的create方法,将带QR码内容的字符串作为输入进行传输。我们将简单的“Hello World”消息作为输入进行传输。qrcode.create("Hello from esp32");由于我们不需要刷新显示屏,我们能够将主循环留空。最终源代码如下所示。#include <Wire.h>
#include "SSD1306.h"
#include <qrcode.h>
SSD1306 display(0x3c, 21, 22);
QRcode qrcode (&display);
void setup() {
display.init();
display.display();
qrcode.init();
qrcode.create("Hello from esp32");
}
void loop() {}

代码测试如需测试代码,只需在设备之间的所有接线完成后,使用Arduino IDE编译并上传到ESP32开发板。如简介部分所述,如果显示关于体系结构不匹配的警告,那么这些内容则可以放心地忽略。程序完成后,您应该在显示器上看到呈现的QR码,如图2所示。


http://mc.dfrobot.com.cn/data/attachment/forum/201905/13/182954dcj4qgw9mg5c0060.png图2- 使用ESP32在SSD1306 OLED上渲染QR码。

然后,您可以使用手机或平板电脑上的扫描应用程序扫描QR码。如图3所示,它应该包含我们在代码中所定义的内容。

http://mc.dfrobot.com.cn/data/attachment/forum/201905/13/182955fu0i0kaf0k00zi19.png图3- 通过Android应用程序扫描QR码。


注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。他写了200多篇有关ESP32、ESP8266的有用的教程和项目。
查看更多ESP32/ESP8266教程和项目:中文版教程 : ESP32教程 合集英文版教程 : ESP32 tutorial 合集


longjunling 发表于 2021-7-21 18:13

一直编译不通过,提示:exit status 1
'QRcode' does not name a type
请问一下, 是什么原因啊,谢谢!

longjunling 发表于 2021-7-21 18:15

一直编译不通过,提示:exit status 1 'QRcode' does not name a type 请问一下, 是什么原因啊,谢谢!
页: [1]
查看完整版本: ESP32 Arduino SSD1306 OLED教程:绘制二维码