物联网开发笔记(30)- 使用Micropython开发ESP32开发板之控制240x240的oled屏幕显示二维码(ST7789芯片)
一、目的
在我们的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芯片)相关推荐
- 物联网开发笔记(27)- 使用Micropython开发ESP32开发板之控制240x240的oled屏幕(ST7789芯片)
这一节我们讲解了如何控制240x240的oled屏幕,该oled屏幕驱动芯片是ST7789,我们控制屏幕显示两行字. 一.目的 使用MicroPython开发ESP32开发板控制240x240的ole ...
- 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第12波-快速生成、读取、导出条形码二维码...
根据指定的内容生成对应的条形码或二维码,在如今移动互联网时代,并不是一件什么新鲜事,随便百度一下,都能找到好多的软件或在线网站可以帮我们做到,但细想一下,如果很偶然地只是生成一个两这样的图形,百度一下 ...
- 物联网开发笔记(31)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(1)
一.目的 我们分3节讲述远程控制.这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,从开发板的TCP服务器上返回字符串. 二.环境 ESP32 + 240x240的oled彩 ...
- 物联网开发笔记(32)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(2)
一.目的 上一节我们测试了远程控制的环境是好的,这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,远程控制LED灯的状态. 二.环境 ESP32 + 240x240的oled ...
- ESP32开发学习 LVGL Littlevgl 创建显示二维码
生成效果: LVGL除了一些常用UI控件外,还提供了很多第三组件可以集成,例如jpg,bmp,gif,png,二维码. LVGL提供的生成器使用的是 nayuki 的二维码生成器,本文我们就来移植LV ...
- MLX90640开发笔记(一)概述及开发资料准备
现在自己在做红外成像仪的越来越多了,两年前有个井下机电设备运行状态的科研项目,当时使用了AMG8833(8*8像素).前段时间因为公司生产电路板测试需要,打算买一台红外成像仪测量电路板发热是否正常,商 ...
- IOS 开发笔记——二维码的生成和扫描
开发当中我们经常遇到二维码的生成或者说是扫描,但是苹果官方给我们准备好了这些 API,那么接下来作者为大家详细讲述一下二维码 在二维码的生成中,我们要用到一个类CIFilter,这是系统的一个滤镜类, ...
- 云炬Android开发笔记 16附加功能开发(二维码,一键分享,分页,搜索)
阅读目录 1.二维码高性能解决方案 1.1推荐的库的使用 1.2 扫描到数据回调的处理 2. 一键分享功能的使用 2.1 第三方功能的使用 2.2 逻辑增加 2.3 编译测试 3.分页功能实现 4. ...
- 【OpenCV 4开发详解】QR二维码检测
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
最新文章
- SQL Server性能计数器部署(批量)
- 销售订单定价-客户取值
- BZOJ 3143 Luogu P3232 [HNOI2013]游走 (DP、高斯消元)
- linux中fork和exec
- Mybatis insert操作细节【ID】
- mac自带php在哪里看,如何开启MacOS11系统的自带的PHP环境
- return语句的用法
- .Net Micro Framework研究—让MF支持鼠标
- 微软公司软件开发模式简介
- 在Ubuntu中搭建NFS服务器
- Keycloak服务器安装和配置
- 折腾AX2012,安装成功,发帖庆祝
- 小甲鱼python飞机大战素材_用Python做飞机大战(含素材)
- 游戏帐号被盗,但是杀毒软件没有发现病毒?DNS挟持盗号原理剖析
- ZZ:别说你会阅读电子书——从编辑、美化PDF电子书的实用技巧说起
- es6删除数组某一项_什么时候用集合,什么时候用数组?一文帮你清晰界定
- java计算机毕业设计网上拍卖系统源码+系统+数据库+lw文档+mybatis+运行部署
- 拉新促活:社交平台唤醒App的高效策略
- 服务器ssd硬盘的读写速度,在不同场景下,应该如何正确选购服务器级SSD固态盘呢?...
- New Document
热门文章
- PHP验证身份证类(包含香港身份证校验)
- php如何处理查询请求,PHP的curl查看header信息的功能(包括查看返回header和请求header)...
- Python爬虫: 单网页 所有静态网页 动态网页爬取
- Cheat Enginee(CE)对扫雷中部分属性的内存地址寻找以及修改~逆向分析
- 安装ps显示计算机丢失adobe,win7系统安装PS显示检查许可证所需的adobe application manager丢失或损坏的解决方法...
- Ubuntu 18.04安装Docker Dashboard
- 主机电源全是黑线怎么短接_电脑电源故障 绿线和黑线短接后风扇转一下就停了。...
- 【哔哩哔哩笔试】顺时针打印数字矩阵
- 怎么让上下两排对齐_《excel表中怎么使同一格内的上下两行对齐》 excel两表格数据对齐...
- 2018-2019赛季多校联合新生训练赛第五场补题与题解(中石油)