一、目的

在我们的240x240的oled屏幕上显示二维码

二、环境

ESP32 + 240x240的oled彩色屏幕+ Thonny IDE + 几根杜邦线

接线方式请看上前面的章节,此处不再重复赘述。

三、用到的模块

在电脑端可以直接用qrcode模块,很容易得到二维码,但是这个模块不能直接用到MicroPython上,需要移植到MicroPython,国外一个开发者已经搞定了,地址如下

https://github.com/JASchilz/uQR

三、代码

from uQR import QRCode  # 导入二维码模块
from machine import Pin, SPI
import st7789_new  # 导入屏幕驱动tft = st7789_new.ST7889_Image(SPI(2, 80000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))  #通过SPI来创建屏幕
tft.fill(st7789_new.color565(255, 255, 255))  # 背景设置为白色qr = QRCode(border=2)  # 创建对象
qr.add_data('Hello World!')  # 这里是要生成的二维码,被扫码之后的得到的内容
matrix = qr.get_matrix()  # 得到的是一个25x25的列表row_len = len(matrix)
col_len = len(matrix[0])# 放大倍数
# 默认情况下输出的二维码太小25x25,可以按照你实际屏幕的大小进行缩放,当前我的240x240屏幕缩放8倍正合适
scale_rate = 8for row in range(row_len * scale_rate):  # 原来默认的25行乘以8for col in range(col_len * scale_rate):  # 原来默认的25列乘以8if matrix[row//scale_rate][col//scale_rate]:  # 发送一个点的信息给屏幕tft.pixel(row, col, st7789_new.color565(0, 0, 0))else:tft.pixel(row, col, st7789_new.color565(255, 255, 255))col += 1row += 1
#v上面操作每次计算出一个点的信息就通过SPI发送1个,传输速度慢

四、显示效果

五、优化代码,加速显示

        我们发现上面的方法,显示的很慢。所以我们下面来优化一下,使他快速显示。

六、加速显示的代码

from uQR import QRCode
from machine import Pin, SPI
import st7789_newtft = st7789_new.ST7889_Image(SPI(2, 80000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
tft.fill(st7789_new.color565(255, 255, 255))  # 背景设置为白色qr = QRCode(border=2)
qr.add_data('Hello World!')
matrix = qr.get_matrix()row_len = len(matrix)
col_len = len(matrix[0])print("row=%d, col=%d" % (row_len, col_len))# 放大倍数
scale_rate = 8# 准备黑色,白色数据
buffer_black = bytearray(scale_rate * scale_rate * 2)  # 每个点pixel有2个字节表示颜色
buffer_white = bytearray(scale_rate * scale_rate * 2)  # 每个点pixel有2个字节表示颜色
color_black = st7789_new.color565(0, 0, 0)
color_black_byte1 = color_black & 0xff00 >> 8
color_black_byte2 = color_black & 0xff
color_white = st7789_new.color565(255, 255, 255)
color_white_byte1 = color_white & 0xff00 >> 8
color_white_byte2 = color_white & 0xfffor i in range(0, scale_rate * scale_rate * 2, 2):buffer_black[i] = color_black_byte1buffer_black[i + 1] = color_black_byte2buffer_white[i] = color_white_byte1buffer_white[i + 1] = color_white_byte2# 循环次数不增加,只增加每次发送的数据量,每次发送scale_rate X scale_rate个点的信息
for row in range(row_len):for col in range(col_len):if matrix[row][col]:# tft.pixel(row, col, st7789_new.color565(0, 0, 0))tft.show_img(row * scale_rate, col * scale_rate, row * scale_rate + scale_rate - 1, col * scale_rate + scale_rate - 1, buffer_black)else:# tft.pixel(row, col, st7789_new.color565(255, 255, 255))tft.show_img(row * scale_rate, col * scale_rate, row * scale_rate + scale_rate - 1 , col * scale_rate + scale_rate - 1, buffer_white)col += 1row += 1

七、加速的显示效果

可以明显的看到屏幕加载显示二维码的速度加快了。

物联网开发笔记(30)- 使用Micropython开发ESP32开发板之控制240x240的oled屏幕显示二维码(ST7789芯片)相关推荐

  1. 物联网开发笔记(27)- 使用Micropython开发ESP32开发板之控制240x240的oled屏幕(ST7789芯片)

    这一节我们讲解了如何控制240x240的oled屏幕,该oled屏幕驱动芯片是ST7789,我们控制屏幕显示两行字. 一.目的 使用MicroPython开发ESP32开发板控制240x240的ole ...

  2. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第12波-快速生成、读取、导出条形码二维码...

    根据指定的内容生成对应的条形码或二维码,在如今移动互联网时代,并不是一件什么新鲜事,随便百度一下,都能找到好多的软件或在线网站可以帮我们做到,但细想一下,如果很偶然地只是生成一个两这样的图形,百度一下 ...

  3. 物联网开发笔记(31)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(1)

    一.目的 我们分3节讲述远程控制.这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,从开发板的TCP服务器上返回字符串. 二.环境 ESP32 + 240x240的oled彩 ...

  4. 物联网开发笔记(32)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(2)

    一.目的 上一节我们测试了远程控制的环境是好的,这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,远程控制LED灯的状态. 二.环境 ESP32 + 240x240的oled ...

  5. ESP32开发学习 LVGL Littlevgl 创建显示二维码

    生成效果: LVGL除了一些常用UI控件外,还提供了很多第三组件可以集成,例如jpg,bmp,gif,png,二维码. LVGL提供的生成器使用的是 nayuki 的二维码生成器,本文我们就来移植LV ...

  6. MLX90640开发笔记(一)概述及开发资料准备

    现在自己在做红外成像仪的越来越多了,两年前有个井下机电设备运行状态的科研项目,当时使用了AMG8833(8*8像素).前段时间因为公司生产电路板测试需要,打算买一台红外成像仪测量电路板发热是否正常,商 ...

  7. IOS 开发笔记——二维码的生成和扫描

    开发当中我们经常遇到二维码的生成或者说是扫描,但是苹果官方给我们准备好了这些 API,那么接下来作者为大家详细讲述一下二维码 在二维码的生成中,我们要用到一个类CIFilter,这是系统的一个滤镜类, ...

  8. 云炬Android开发笔记 16附加功能开发(二维码,一键分享,分页,搜索)

    阅读目录 1.二维码高性能解决方案 1.1推荐的库的使用 1.2 扫描到数据回调的处理 2. 一键分享功能的使用 2.1 第三方功能的使用 2.2 逻辑增加 2.3 编译测试 3.分页功能实现  4. ...

  9. 【OpenCV 4开发详解】QR二维码检测

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

最新文章

  1. centos上安装anaconda并配置虚拟环境
  2. 原型模式(Prototype)以及深浅复制
  3. js获取本地文件夹和文件 .
  4. Jquery的load加载本地文件出现跨域错误的解决方案
  5. 个人空间html5主页面,2.HTML 教程- (HTML5 简介)
  6. 越做越好的adobe acrobat
  7. AES 主动转向 紧急转向 避障系统 转向避障 五次多项式 PID控制 纯跟踪控制 MPC控制 模型预测
  8. LeetCode 69. x 的平方根
  9. vue 左侧菜单可拖动
  10. UMTS到LTE的系统架构演进(学习整理:LTE完全指南-LTE、LTE-Advanced、SAE、VolTE和4G移动通信)
  11. virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通...
  12. BeanCurrentlyInCreationException异常分析及解决
  13. Android Home键按键事件监听
  14. paper 43 :ENDNOTE下载及使用方法简介
  15. GitHub 近 70K 星,命令行的艺术!
  16. 自动分账系统怎么开通?
  17. 【暴力枚举】二进制枚举-幼儿园买玩具
  18. 超声波脉冲发生器可调电源设计
  19. PMP试题 | 每日一练,快速提分(十二)
  20. RISC-V架构的开源处理器分析

热门文章

  1. 手机远程连接window界面或ubuntu界面
  2. 玩机器人可以学到什么?
  3. OCR文档识别的工作原理
  4. COLA之架构演变(一)
  5. 华为Mate40系列国行参数价格曝光
  6. 棋牌算法——“贰柒拾”(字牌)
  7. excel将柱状图的柱宽减为直线的方法 作x轴垂线的方法
  8. 计算机房 危险源辨识,消防安全重点部位不仅要根据火灾危险源的辨识来确..._消防考试_帮考网...
  9. MATLAB如何固定text在图中的相对位置
  10. SDL版仙剑奇侠传读后感