zl程序教程

您现在的位置是:首页 >  Python

当前栏目

(七)MicroPython——显示二维码

2023-02-18 16:23:34 时间

目录

学习目标

成果展示 

代码 

总结 


学习目标

        本次就是使用上节课学的东西来显示一个二维码,比较简单,就不赘述。

成果展示 

代码 

from uQR import QRCode
from machine import Pin, SPI
import st7789


tft = st7789.ST7889_Image(SPI(2, 80000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
tft.fill(st7789.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])

# 放大倍数
# 默认情况下输出的二维码太小,可以按照你实际屏幕的大小进行缩放,当前我的240x240屏幕缩放8倍正合适
scale_rate = 8

buffer_black = bytearray(scale_rate * scale_rate * 2)  # 每个点pixel有2个字节表示颜色
color_black = st7789.color565(0, 0, 0)
color_black_byte1 = color_black & 0xff00 >> 8
color_black_byte2 = color_black & 0xff

for i in range(0, scale_rate * scale_rate * 2, 2):
    buffer_black[i] = color_black_byte1
    buffer_black[i + 1] = color_black_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_itprojects.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)
        col += 1
    row += 1

总结 

        就是调库,没什么难的,就是后面优化程序有点意思。