电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
Arduino 输出二维码到显示屏上
分 享
扫描二维码分享
Arduino 输出二维码到显示屏上
esp8266
arduino
xbk_425933
关注
发布时间: 2022-01-05
丨
阅读: 1231
# 写在开头 最近闲来无事,研究Arduino,突发奇想想要编写代码输出二维码到显示屏上。于是,通过查找资料和第三方库,实现了二维码的显示,效果还是可以的,使用微信的扫一扫一般对焦后都可以扫描,这篇文章就为大家分享一下二维码的生成和显示。 # 使用材料 ESP8266 NodeMCU * 1 SSD1306 OLED显示屏(i2c接口)(128*64) * 1 杜邦线 * 4 # 硬件接线 GND - GND VCC - 任意3.3V SCL (Clock线) - GPIO4 SDA (Data线) - GPIO5 # 所需Arduino库 https://github.com/olikraus/u8g2 https://github.com/ricmoo/qrcode/ # 效果预览 ![](https://cf04.ickimg.com/bbsimages/202112/486dbc38e5c1efaac341600af32b23a8.jpg) # 实现原理 使用QRCode库,生成二维码数组,然后通过u8g2库drawPixel画像素点显示到屏幕上面。 #实现代码 ```cpp #include
#include
#include
#include "qrcode.h" U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /@@* reset=*/ U8X8_PIN_NONE, /@@* clock=*/ 4, /@@* data=*/ 5); // ESP32 Thing, HW I2C with pin remapping void setup() { // put your setup code here, to run once:\ // init u8g2 u8g2.begin(); // gen the QR code QRCode qrcode; uint8_t qrcodeData[qrcode_getBufferSize(3)]; qrcode_initText(&qrcode, qrcodeData, 3 , ECC_LOW, "test"); // start draw u8g2.firstPage(); do { // get the draw starting point,128 and 64 is screen size uint8_t x0 = (128 - qrcode.size * 2) / 2; uint8_t y0 = (64 - qrcode.size * 2) / 2; // get QR code pixels in a loop for (uint8_t y = 0; y < qrcode.size; y++) { for (uint8_t x = 0; x < qrcode.size; x++) { // Check this point is black or white if (qrcode_getModule(&qrcode, x, y)) { u8g2.setColorIndex(1); } else { u8g2.setColorIndex(0); } // Double the QR code pixels u8g2.drawPixel(x0 + x * 2, y0 + y * 2); u8g2.drawPixel(x0 + 1 + x * 2, y0 + y * 2); u8g2.drawPixel(x0 + x * 2, y0 + 1 + y * 2); u8g2.drawPixel(x0 + 1 + x * 2, y0 + 1 + y * 2); } } } while ( u8g2.nextPage() ); } void loop() { // put your main code here, to run repeatedly: } ``` # 关于二维码的version和可以存储的内容大小 参考https://github.com/ricmoo/qrcode/#data-capacities 大体来说就是二维码的version和校验程度会影响其内部可以存储的内容大小 博主这边使用了Version3 ECC_LOW,这会生成29*29像素的二维码,不过这样显示出来的像素点会非常小,这里将其放大了一倍,相当于58*58,使其更加容易被扫描。
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
xbk_425933
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交