加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

Arduino-使用ESP32生成二维码并显示(带反显设置)

03/20 10:00
2144
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
    • 一 前言
    • 二 开发环境
    • 三 所需库
    • 四 实现过程
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

一 前言

最近需要实现一个使用二维码进行显示的项目,记录一下使用和实现过程,方便后面复习查看,也提供给大家进行查考

二 开发环境

Arduino IDE

芯片 ESP32-WROOM

 所需环境的搭建可以参考我之前发布的文章

Arduino IDE 使用安装以及ESP32库的导入(离线)icon-default.png?t=N7T8https://blog.csdn.net/herui_2/article/details/135296814?spm=1001.2014.3001.5502

三 所需库

QRcode

Github 链接icon-default.png?t=N7T8https://github.com/ricmoo/QRCode

首先先下载库的压缩包

首先先解压我们的下载的压缩包,找到src文件夹,里面的文件就是我们需要用到的文件

 将这两个文件放到我们需要生成二维码项目的文件夹里面即可

目录如下图所示,我们的项目就可以直接使用二维码库了。

U8g2

U8g2库在我们的项目中直接安装即可了

四 实现过程

避坑

一定不要采用双拼色屏幕去做二维码!!

一定不要采用双拼色屏幕去做二维码!!

一定不要采用双拼色屏幕去做二维码!!

因为双拼屏幕中间有条杠,二维码显示不完全;

效果

关于反显二维码

我在网上没有找到相关资料,所以自己想了一下,我自己画一个白色背景不就行了哈哈,结果还是舒适的,主要加了这段代码,以及修改了二维码的黑白反向

u8g2.drawBox(0, 0, 128, 64);  //画箱

 代码如下

// 显示二维码
void QR_Code() {
  // 二维码
  QRCode qrcode;
  uint8_t qrcodeData[qrcode_getBufferSize(3)];
  qrcode_initText(&qrcode, qrcodeData, 3, ECC_LOW, "HX125458726");
  // 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;
    // u8g2.setDrawColor(1); //
    u8g2.drawBox(0, 0, 128, 64);  //画箱
    // 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(0);
        } else {
          u8g2.setColorIndex(1);
        }
        // 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());
}

接口

 OLED显示屏接口如下

代码

 代码编写如下

#include <U8g2lib.h>
// OLED
#include <WiFi.h>
// 二维码所需库
#include "qrcode.h"
// 显示屏 配置
#define SCL 22
#define SDA 21
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, /*reset=*/U8X8_PIN_NONE);
char str[50];  //拼接字符使用

void setup() {  
  Serial.begin(9600);  // 启动串口通讯
  //OELD
  u8g2.begin();
  u8g2.setFont(u8g2_font_ncenB08_tr);  //设定字体
  QR_Code(); // 生成

}
// 显示二维码
void QR_Code() {
  // 二维码
  QRCode qrcode;
  uint8_t qrcodeData[qrcode_getBufferSize(3)];
  qrcode_initText(&qrcode, qrcodeData, 3, ECC_LOW, "https://blog.csdn.net/herui_2?spm=1000.2115.3001.5343");
  // 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() {


}

完整项目

链接:https://pan.baidu.com/s/1cfNZIBarf7X5ryMF7b8zbQ?pwd=XZY0
提取码:XZY0

  • Arduino-使用ESP32生成二维码并显示(带反显设置).docx

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
FT232RQ-TRAY 1 FTDI Chip USB Bus Controller, CMOS, 5 X 5 MM, GREEN, QFN-32

ECAD模型

下载ECAD模型
$4.5 查看
ATXMEGA128A4U-MH 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 44VQFN

ECAD模型

下载ECAD模型
$5.12 查看
CP2102N-A02-GQFN24R 1 Silicon Laboratories Inc USB Bus Controller, CMOS, QFN-24

ECAD模型

下载ECAD模型
$2.59 查看

相关推荐

电子产业图谱

方案定制,程序设计方案、单片机程序设计与讲解、APP定制开发。本公众号致力于向读者传递关于程序设计和开发的相关知识,并分享一些关于软件开发的最佳实践。如果您有什么问题或建议,请随时联系我们。我们将竭诚为您服务