用Arduino制作一个二维码显示器
先上图

场景是这样的, 这几天给CS系统做一个微信支付的功能, 但是生成的二维码是在前台的电脑上..不可能让用户跑到前台的电脑上去扫描...然后拿出了N年前买的Arduino 做了一个二维码显示器..就可以放在前台的桌子上了.

淘宝有很多种,最便宜的只要十几块................................320*240,能装SD卡,还能触摸..最爽的是直插UNO,直插直插,不用接线..
很简单的程序,通过串口和主机通讯,在屏幕上显示一个二维码...
但是有两个问题,不可能传输图片,图片太大,串口太慢,, 所以把支付地址通过串口发送到板子上,然后找到QRCode(https://github.com/ricmoo/QRCode)这个库,生成二维码..
注意,单片机资源受限,生成更大二维码需要更大的内存,也需要更长的时间,见QRCode文档..有的大的就用不了.
我用的是51*51的分辨率.然后再扩大4倍,也就二百个像素..
见代码.
void loop()
{
//颜色,白色.
int c = 0x0000; if (Serial.available())
{
Serial.println("Start");
LCD_Clear(0xffff);
//串口收到数据,清空屏幕,然后生成二维码.
String strURL = Serial.readString();
Serial.println(strURL);
QRCode qrcode;
//选择二维码类型,这里是9, 两个数字一样
uint8_t qrcodeData[qrcode_getBufferSize()];
char* p = strURL.c_str();
qrcode_initText(&qrcode, qrcodeData, , , p);
Serial.println(qrcode.size);
// 图片放大的倍数, 51*51的分辨率显示出来是什么样??
int kuo = ;
for (uint8_t y = ; y < qrcode.size; y++) {
for (uint8_t x = ; x < qrcode.size; x++) {
int hs = qrcode_getModule(&qrcode, x, y) ? : ;
if (hs == )
{
//放大图片.
unsigned int xk = x * kuo + ;
unsigned int yk = y * kuo+ ;
for (uint8_t k = ; k < kuo; k++)
{
V_line( xk+ k, yk, kuo, c);
}
}
}
}
}
}
注意,这个屏幕是个便宜货,厂家给的DEMO根本驱动不起来,也不提供支持..
我这里有自己改的驱动...
用Arduino制作一个二维码显示器的更多相关文章
- 为iOS应用制作一个二维码
第一步:找到你发布的ios应用的下载链接: 第二步:使用二维码转换器,将下载链接转换成 二维码.http://my.qzone.qq.com/app/100699951.html?via=appcen ...
- 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用
因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码 https ...
- 公司开发的APP,如何生成一个二维码,供客户下载使用
1.其实和简单,因为一般的用户使用扫一扫,大多数都是用微信自带的扫一扫工具 而,微信打开的二维码页面,会自动屏蔽apk文件,所以显然把apk的url生成一个二维码,让用户扫一扫就能直接下载,这样是行不 ...
- 一个二维码如何自动识别是安卓(Android)还是苹果(IOS)
思考问题: 通常,我们开发一个APP,有Android版本.IOS版本. 但是只有一个二维码?怎么办呢? 怎么让IOS用户扫描二维码下载IOS版本,Android用户扫描二维码下载到Android版本 ...
- 详解C#泛型(二) 获取C#中方法的执行时间及其代码注入 详解C#泛型(一) 详解C#委托和事件(二) 详解C#特性和反射(四) 记一次.net core调用SOAP接口遇到的问题 C# WebRequest.Create 锚点“#”字符问题 根据内容来产生一个二维码
详解C#泛型(二) 一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { ...
- 用一个二维码做下载地址,自动区分是 ios 还是 android
用一个二维码做下载地址,自动区分是 ios 还是 android, 甚至区分 iphone 和 ipad. <html> <head> <meta http-equiv ...
- 用lua nginx module搭建一个二维码
用lua nginx module搭建一个二维码(qr code)生成器 作者 vinoca 發布於 2014年10月31日 如果有VPS,或者开源的路由器,安装一个nginx,添加lua-nginx ...
- 安卓app和苹果app共用一个二维码
应项目要求,现在安卓app和苹果app共用一个二维码,对外提供下载: <html> <head> <meta http-equiv="Content-Type& ...
- PHP实现一个二维码同时支持支付宝和微信支付
实现思路 生成一个二维码,加入要处理的url连接 在用户扫完码后,在对应的脚本中,判断扫码终端,调用相应的支付 若能够扫码之后能唤起相应app,支付宝要用手机网站支付方式,微信要使用jsapi支付方式 ...
随机推荐
- Google Interview University 一套完整的学习手册帮助自己准备 Google 的面试
https://github.com/jwasham/google-interview-university/blob/master/README-cn.md
- STM32F4 输入输出(GPIO)模式理解
stm32的GPIO的配置模式有好几种,包括: 1. 模拟输入: 2. 浮空输入: 3. 上拉输入: 4. 下拉输入: 5. 开漏输出: 6. 推挽输出: 7. 复用开漏输出: 8. 复用推挽输出 ...
- Scheme change not implemented
1.错误描述 2.错误原因 由于在改变Java代码中的方法或运行代码出现,导致Tomcat编译的代码不能替换工作空间的代码,即不能及时同步,出现错误 3.解决办法 (1)关闭Tomcat,clean一 ...
- WDF驱动的编译、调试、安装
编译和调试使用WDK编译,源代码应包括wdf.h,ntddk.h以及KMDF_VERSION=1,编译使用/GS.KMDF包括以下库:1). WdfDriverEntry.lib(编译时绑定):驱动入 ...
- linq查询集合并分页展示数据
private void Bind() { if (Request.QueryString["QuestionNo"] != null) { string QuestionNo = ...
- python实现简单排序算法
算法 递归两个特点: 调用自身 有穷调用 计算规模越来越小,直至最后结束 用装饰器修饰一个递归函数时会出现问题,这个问题产生的原因是递归的函数也不停的使用装饰器.解决方法是,只让装饰器调用一次即可,那 ...
- Web前端开发学习笔记(二)
Homework2:http://my.ss.sysu.edu.cn/wiki/display/WEB/Homework+2+-+Movie+Review 这份作业跟布局相关,因此很多都是布局的知识: ...
- JQuery实现点击按钮切换图片(附源码)--JQuery基础
JQuery实现切换图片相对比较简单,直接贴代码了哈,有注释噢!疑问请追加评论哈,不足之处还请大佬们指出! 1.案例代码: demo.html: <!DOCTYPE html><ht ...
- Postgresql基本用法以及优化注意
本篇为之前学习PG数据库一些基本操作使用以及优化注意. 比较运算符 = : <>,!=,<= , <,>=,>: 不能用于null判断; Between: Le ...
- 如何从Eclipse 迁移到Android Studio 且保持Eclipse项目结构
本文demo下载:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=531 Android项目 Eclipse与A ...