2019-5-13 18:30:35 [显示全部楼层]
8130浏览
查看: 8130|回复: 2

[ESP32系列教程] ESP32 Arduino SSD1306 OLED教程:绘制二维码

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


ESP32 Arduino SSD1306 OLED教程:绘制二维码图1
图1  - 安装QR代码库。


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


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


[mw_shl_code=applescript,true]#include <Wire.h>
#include "SSD1306.h"
#include <qrcode.h>[/mw_shl_code]


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

[mw_shl_code=applescript,true]
SSD1306 display(0x3c, 21, 22);[/mw_shl_code]


我们还需要声明QRcode类对象,它将公开初始化和创建QR代码所需的各种方法。
该类构造函数接收我们刚刚创建的显示对象的引用作为输入内容。
[mw_shl_code=applescript,true]
QRcode qrcode (&display);[/mw_shl_code]

现在转到Arduino设置函数,我们将在显示对象上调用init方法初始化SSD1306。

[mw_shl_code=applescript,true]display.init();[/mw_shl_code]

我们还需要在qrcode对象上调用init方法对它进行初始化。
[mw_shl_code=applescript,true]qrcode.init();[/mw_shl_code]
最终为了显示QR码,我们只需调用qrcode对象的create方法,将带QR码内容的字符串作为输入进行传输。我们将简单的“Hello World”消息作为输入进行传输。
[mw_shl_code=applescript,true]qrcode.create("Hello from esp32");[/mw_shl_code]
由于我们不需要刷新显示屏,我们能够将主循环留空。最终源代码如下所示。
[mw_shl_code=applescript,true]#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() {}
[/mw_shl_code]

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


ESP32 Arduino SSD1306 OLED教程:绘制二维码图2
图2  - 使用ESP32在SSD1306 OLED上渲染QR码。


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

ESP32 Arduino SSD1306 OLED教程:绘制二维码图3
图3  - 通过Android应用程序扫描QR码。



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

查看更多ESP32/ESP8266教程和项目:
中文版教程 : ESP32教程 合集
英文版教程 : ESP32 tutorial 合集



gada888  版主

发表于 2019-5-24 09:34:14

还能做二维码,见识了
回复

使用道具 举报

猪爱吃面  见习技师

发表于 2024-10-15 20:05:57

虽然不是很懂 但是很厉害的样子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail