TFT显示自动生成的二维码
- 应用场景
- 案例说明
- 1.硬件
- 2.连线图
- 代码
- 源码链接[TFT显示二维码](https://www.yuque.com/haas506/wiki/pubazmzgrf30zws0)
应用场景
二维码在各个领域中的应用越来越广泛,其中一些主要应用场景包括:
电子商务:通过二维码,用户可以轻松链接到商家的网站,浏览商品信息,完成购买流程。
票务系统:许多电影院、音乐厅等场所使用二维码作为电子门票,从而方便用户购买、入场等环节。
广告推广:在营销活动中,二维码可以用于引导用户进入推广页面或者下载APP等操作。
教育培训:老师可以在教材或者课件中加入二维码,学生扫描后可以快速跳转到相关的视频、PPT等资料。
公共服务:政府机构使用二维码作为身份证件,医疗机构使用二维码查询个人就医信息等。
随着技术的不断提升和应用场景的增多,二维码的应用领域还将进一步扩大,并且未来将成为未来的主要趋势。
案例说明
- 案例使用MicroPython的qrcode模块,可以直接将文本内容转化成二维码。
- 通过SPI串口,将二维码显示在TFT屏幕上。
1.硬件
器材 | 数量 |
---|---|
HaaS506开发板 | 1 |
128x160TFT屏幕 | 1 |
杜邦线 | 若干 |
2.连线图
代码
修改下列数据调整二维码
#---------------------------------------------------------------------
scale_rate = 3 # 放大倍数
x=14 #起始x坐标
y=20 #起始y坐标
content='https://www.yuque.com/haas506/wiki' #二维码内容
#---------------------------------------------------------------------
源码链接TFT显示二维码
main.py
from st7735s import ST7889_Image
import utime as time
from qrcode import QRCode
tft=ST7889_Image()
qr = QRCode(border=2)
#---------------------------------------------------------------------
scale_rate = 3 # 放大倍数
x=14 #起始x坐标
y=20 #起始y坐标
content='https://www.yuque.com/haas506/wiki' #二维码内容
#---------------------------------------------------------------------
qr.add_data(content)
matrix = qr.get_matrix()
tft.tft_begin()
row_len = len(matrix)
col_len = len(matrix[0])
print("row=%d, col=%d" % (row_len, col_len))
# 准备黑色,白色数据
buffer_black = bytearray(scale_rate * scale_rate * 2) # 每个点pixel有2个字节表示颜色
buffer_white = bytearray(scale_rate * scale_rate * 2) # 每个点pixel有2个字节表示颜色
color_black = 0x0000
color_black_byte1 = color_black & 0xff00 >> 8
color_black_byte2 = color_black & 0xff
color_white = 0xffff
color_white_byte1 = color_white & 0xff00 >> 8
color_white_byte2 = color_white & 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
buffer_white[i] = color_white_byte1
buffer_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.show_img(x+(row * scale_rate), y+(col * scale_rate), x+(row * scale_rate + scale_rate - 1), y+(col * scale_rate + scale_rate - 1), buffer_black)
else:
tft.show_img(x+(row * scale_rate), y+(col * scale_rate), x+(row * scale_rate + scale_rate - 1), y+(col * scale_rate + scale_rate - 1), buffer_white)
col += 1
row += 1
#英文显示
tft.tft_showString(44,130,"haas506",0xffff)
board.json
{
"name": "haas506",
"version": "1.0.0",
"io": {
"cs": {
"type": "GPIO",
"port": 15,
"dir": "output",
"pull": "pullup"
},
"dc":{
"type":"GPIO",
"port": 3,
"dir": "output",
"pull":"pullup"
},
"rst":{
"type":"GPIO",
"port": 20,
"dir": "output",
"pull":"pullup"
},
"ST7735S": {
"type": "SPI",
"port": 0,
"mode": "master",
"freq": 2000000
}
},
"debugLevel": "ERROR",
"repl": "enable",
"replPort": 0
}