一、目的

在我们的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. SQL Server性能计数器部署(批量)
  2. 销售订单定价-客户取值
  3. BZOJ 3143 Luogu P3232 [HNOI2013]游走 (DP、高斯消元)
  4. linux中fork和exec
  5. Mybatis insert操作细节【ID】
  6. mac自带php在哪里看,如何开启MacOS11系统的自带的PHP环境
  7. return语句的用法
  8. .Net Micro Framework研究—让MF支持鼠标
  9. 微软公司软件开发模式简介
  10. 在Ubuntu中搭建NFS服务器
  11. Keycloak服务器安装和配置
  12. 折腾AX2012,安装成功,发帖庆祝
  13. 小甲鱼python飞机大战素材_用Python做飞机大战(含素材)
  14. 游戏帐号被盗,但是杀毒软件没有发现病毒?DNS挟持盗号原理剖析
  15. ZZ:别说你会阅读电子书——从编辑、美化PDF电子书的实用技巧说起
  16. es6删除数组某一项_什么时候用集合,什么时候用数组?一文帮你清晰界定
  17. java计算机毕业设计网上拍卖系统源码+系统+数据库+lw文档+mybatis+运行部署
  18. 拉新促活:社交平台唤醒App的高效策略
  19. 服务器ssd硬盘的读写速度,在不同场景下,应该如何正确选购服务器级SSD固态盘呢?...
  20. New Document

热门文章

  1. PHP验证身份证类(包含香港身份证校验)
  2. php如何处理查询请求,PHP的curl查看header信息的功能(包括查看返回header和请求header)...
  3. Python爬虫: 单网页 所有静态网页 动态网页爬取
  4. Cheat Enginee(CE)对扫雷中部分属性的内存地址寻找以及修改~逆向分析
  5. 安装ps显示计算机丢失adobe,win7系统安装PS显示检查许可证所需的adobe application manager丢失或损坏的解决方法...
  6. Ubuntu 18.04安装Docker Dashboard
  7. 主机电源全是黑线怎么短接_电脑电源故障 绿线和黑线短接后风扇转一下就停了。...
  8. 【哔哩哔哩笔试】顺时针打印数字矩阵
  9. 怎么让上下两排对齐_《excel表中怎么使同一格内的上下两行对齐》 excel两表格数据对齐...
  10. 2018-2019赛季多校联合新生训练赛第五场补题与题解(中石油)