成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 方案介紹
    • 一 前言
    • 二 開發(fā)環(huán)境
    • 三 所需庫(kù)
    • 四 實(shí)現(xiàn)過程
  • 附件下載
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Arduino-使用ESP32生成二維碼并顯示(帶反顯設(shè)置)

2024/03/20
5609
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

Arduino-使用ESP32生成二維碼并顯示(帶反顯設(shè)置).docx

共1個(gè)文件

一 前言

最近需要實(shí)現(xiàn)一個(gè)使用二維碼進(jìn)行顯示的項(xiàng)目,記錄一下使用和實(shí)現(xiàn)過程,方便后面復(fù)習(xí)查看,也提供給大家進(jìn)行查考

二 開發(fā)環(huán)境

Arduino IDE

芯片 ESP32-WROOM

?所需環(huán)境的搭建可以參考我之前發(fā)布的文章

Arduino IDE 使用安裝以及ESP32庫(kù)的導(dǎo)入(離線)icon-default.png?t=N7T8https://blog.csdn.net/herui_2/article/details/135296814?spm=1001.2014.3001.5502

三 所需庫(kù)

QRcode

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

首先先下載庫(kù)的壓縮包

首先先解壓我們的下載的壓縮包,找到src文件夾,里面的文件就是我們需要用到的文件

?將這兩個(gè)文件放到我們需要生成二維碼項(xiàng)目的文件夾里面即可

目錄如下圖所示,我們的項(xiàng)目就可以直接使用二維碼庫(kù)了。

U8g2

U8g2庫(kù)在我們的項(xiàng)目中直接安裝即可了

四 實(shí)現(xiàn)過程

避坑

一定不要采用雙拼色屏幕去做二維碼!!

一定不要采用雙拼色屏幕去做二維碼??!

一定不要采用雙拼色屏幕去做二維碼??!

因?yàn)殡p拼屏幕中間有條杠,二維碼顯示不完全;

效果

關(guān)于反顯二維碼

我在網(wǎng)上沒有找到相關(guān)資料,所以自己想了一下,我自己畫一個(gè)白色背景不就行了哈哈,結(jié)果還是舒適的,主要加了這段代碼,以及修改了二維碼的黑白反向

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>
// 二維碼所需庫(kù)
#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);  // 啟動(dòng)串口通訊
  //OELD
  u8g2.begin();
  u8g2.setFont(u8g2_font_ncenB08_tr);  //設(shè)定字體
  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() {


}

完整項(xiàng)目

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

  • Arduino-使用ESP32生成二維碼并顯示(帶反顯設(shè)置).docx
    下載

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AT90CAN128-16MUR 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 64QFN
$7.13 查看
DS3231SN# 1 Maxim Integrated Products Real Time Clock, Non-Volatile, 1 Timer(s), CMOS, PDSO16, 0.300 INCH, SOIC-16
$11.21 查看
MK70FX512VMJ15 1 Freescale Semiconductor Kinetis K 32-bit MCU, ARM Cortex-M4 core, 512KB Flash, 150MHz, Graphics LCD, MAPBGA 256

ECAD模型

下載ECAD模型
$17.99 查看

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!

方案定制,程序設(shè)計(jì)方案、單片機(jī)程序設(shè)計(jì)與講解、APP定制開發(fā)。本公眾號(hào)致力于向讀者傳遞關(guān)于程序設(shè)計(jì)和開發(fā)的相關(guān)知識(shí),并分享一些關(guān)于軟件開發(fā)的最佳實(shí)踐。如果您有什么問題或建議,請(qǐng)隨時(shí)聯(lián)系我們。我們將竭誠(chéng)為您服務(wù)

綦江县| 青海省| 靖远县| 洞头县| 敦化市| 大悟县| 安陆市| 东宁县| 灯塔市| 吉林省| 嵊州市| 聂荣县| 延边| 建宁县| 洪雅县| 蒙阴县| 平湖市| 博客| 灵台县| 竹北市| 邛崃市| 新营市| 富顺县| 龙岩市| 兴国县| 菏泽市| 龙井市| 清苑县| 专栏| 盐池县| 海兴县| 虎林市| 佛山市| 威海市| 临猗县| 嘉祥县| 高要市| 平塘县| 简阳市| 东安县| 曲松县|