3.34 haas506 2.0开发教程-example -TFT显示自动生成的二维码

news2025/2/23 18:28:16

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
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RHCSA之查看命令帮助手册

目录 RHCSA之查看命令帮助手册 查看命令类型 --- type Linux中对应的命令类型 帮助命令 help 命令 用法1 help 内部命令 用法2 命令 --help 命令的部分语法符号解析 man 命令 man命令用法 man的帮助级 man 命令帮助信息界面中的常用操作 man命令中帮助信息的结构以及意义…

CGAN(条件GAN)

相比于GAN,CGAN给生成器和辨别器都添加了一个辅助信息,假设为y,y可以是标签类别或者其他模态的信息。 目标函数相比于GAN在输入端的x和z变为在y条件下生成的x和z。 模型框架可以表示为: 代码: import argparse import os os.en…

如何在linux中配置JDK环境变量

在linux系统部署皕杰报表,因皕杰报表是一款纯java报表工具,运行时需要jre环境,所以要在服务器上配置三个jdk环境变量path、classpath、JAVA_HOME。 那么为什么要配置jdk环境变量呢?因为java软件运行时要用到一些java命令&#xff…

人体样本? 一站式医学微生态研究解决方案来啦!

细菌?真菌?古菌?病毒? 还在为人体微生态研究选择哪个切入点而苦苦纠结吗? 数据?算法?作图?分析? 还在苦于已有的分析内容脱离医学临床实际而不知所措吗? …

vue 3.0 静态路由配置

今天研究了一下vue3.0的静态路由配置,分享一下。 首先我们现在项目中建立router文件夹,如下图所示: 404文件夹存放404页面,components文件夹存放首页界面,config为设置文件夹,diz存放具体的业务逻辑和界面…

SpringMVC 执行流程

视图阶段(老旧JSP等) DispatcherServlet:接收请求、响应结果,所有的请求都要经过它,它是被Tomcat容器初始化的当这个类加载时会加载一些组件类HandlerMapping、HandlerAdapter、ViewResolver等等。 HandlerMapping:根…

考古:Transformer

论文1: 《Attention is all you need》 模型体系结构 Encoder 将符号表示的输入序列 ( x 1 , . . . , x n ) (x_1,...,x_n) (x1​,...,xn​)映射到连续表示的序列 z ( z 1 , . . . , z n ) z(z_1,...,z_n) z(z1​,...,zn​)。 给定 z z z,Encoder 然后一次产生一…

网络安全合规-个人信息安全影响评估

信息安全技术个人信息安全影响评估指南》 一、个人信息安全影响评估定义 个人信息安全影响评估Personal Information Security Impact Assessment,针对个人信息处理活动,检验其合法合规程度,判断其对个人信息主体合法权益造成损害的各种风险…

操作系统原理 —— 什么是进程互斥? 以及进程互斥的实现方式(十四)

什么是进程互斥? 在操作系统中,有两种资源共享方式,一种是互斥共享方式,一种是同时共享方式。 互斥共享方式就是指在系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资…

看懂身份证识别OCR:从算法到 API 使用

引言 身份证识别OCR API是一种基于 OCR 技术的身份证识别服务,可以将身份证上的各种信息自动识别并提取出来,包括姓名、身份证号码、性别、民族、出生年月日、地址、签发机关和有效期等。 这项技术可以大大提高身份验证和信息采集的准确性和效率&#…

SpringBoot——配置文件的作用

简单介绍: 之前我们介绍了有关于SpringBoot文件结构的resources文件夹下面的两个子文件夹的作用,也就是在我们访问页面的时候使用方式静态资源的地方,那么在这个文件夹下面还有一个文件叫做application.properties,这个文件就是项…

【容器化应用程序设计和开发】2.6 DevOps实践和持续集成/持续部署流程

往期回顾: 第一章:【云原生概念和技术】 第二章:2.1 容器化基础知识和Docker容器 第二章:2.2 Dockerfile 的编写和最佳实践 第二章:2.3 容器编排和Kubernetes调度 第二章:2.4 容器网络和存储 第二章&…

IP信息收集

1.DNS服务器类型 例如bbs.neko.com,本地DNS服务器,根DNS服务器,TLD(TOP Level DNS)顶级域名服务器解析neko.com,authoritative DNS server(解析bbs.三级域名) 两种查询方式&#x…

2023年5月深圳数据分析师需要哪些证书?当然CPDA

CPDA数据分析师认证是大数据方面的认证,助力数据分析人员打下扎实的数据分析基础知识功底,为入门数据分析保驾护航。 帮助数据分析人员掌握系统化的数据分析思维和方法论,提升工作效率和决策能力,遇到问题能够举一反三&#xff0c…

《针灸》笔记(倪海厦先生人纪系列针灸篇——任脉)

程序员上了年纪,各种职业病就来了,人工智能成为好工具的同时,自己的时间也多了一些。 了解他才能判断他的真伪,没学过就认为中医是糟粕的,请划走。 学到什么记什么,线上线下齐下手,自用笔记&…

JAVA项目通过IDEA如何构建可执行JAR

开发JAVA工程代码(main方法启动)如何构建出可以通过java -jar命令直接执行的jar?如果工程中依赖其他jar又如何处理?本文即针对以上两点通过IDEA开发工具来做一个简单的分析和尝试,测试如下四种方法,如有瑕疵请轻喷。 文字目录 1.…

命令行下载谷歌云盘超大文件

在这申请API:https://developers.google.com/oauthplayground/

GL绘制自定义线条3_自定义线帽

安卓Path搭配Paint可以设置线帽,我想能不能把我自己的线条绘制Demo也加上类似的功能。 线头规则描述: 1、设一个线宽一半的线段,坐标为(0, 0)到(-lineWidth / 2, 0)。 2、设步骤1的线段有一垂直于它的向量(0,1),然后传…

成功的项目管理的关键之一——时间计划

在现实的项目管理中,由于时间管理控制不力,导致项目拖期交付使用而使各相关方蒙受损失的案例屡见不鲜,究其原因,不完善的项目时间计划安排是一个重要的方面。成功的项目管理的关键之一就是成功的时间管理,而成功的时间…

Docker中如何限制容器可用的 CPU

默认情况下容器可以使用的主机 CPU 资源是不受限制的。和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程序异常使用 CPU 的情况,很可能把整个主机的 CPU 资源耗尽,从而导致更大的灾难。本文将介绍…