用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(9)];
    char* p = strURL.c_str();
    qrcode_initText(&qrcode, qrcodeData, 9, 0, p);
    Serial.println(qrcode.size);
     // 图片放大的倍数, 51*51的分辨率显示出来是什么样??
    int kuo = 4;
    
    for (uint8_t y = 0; y < qrcode.size; y++) {
      for (uint8_t x = 0; x < qrcode.size; x++) {
        int hs = qrcode_getModule(&qrcode, x, y) ? 1 : 0;
        if (hs == 1)
        {
           //放大图片.
          unsigned int xk = x * kuo + 20;
          unsigned int yk = y * kuo+ 20;
          for (uint8_t k = 0; k < kuo; k++)
          {
              V_line( xk+ k, yk, kuo, c);
          }
        }
      }
    }
  }
}

注意,这个屏幕是个便宜货,厂家给的DEMO根本驱动不起来,也不提供支持..

我这里有自己改的驱动...

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏更流畅、简洁的软件开发方式

分页解决方案 —— GridView + QuickPager + QuickPager_SQL + DataAccessLibrary + 数据库

    这里要说的不仅仅是一个分页控件,而是一套解决方案,包括如何显示数据、显示分页导航,如何得到分页用的sql语句(等效于存储过程),如何提取数据,如何绑定控...

2198
来自专栏张戈的专栏

分享WordPress Mobile Pack汉化精简版及隐藏指定插件更新提示的方法

妈妈说,文章内容不一定要赞,但是标题绝对要长,俺还是很听话的.... 一、WordPress Mobile Pack 汉化精简版 言归正传,上次写在《解决 36...

3553
来自专栏菩提树下的杨过

Silverlight中也玩屏幕截图

先上演示地址:http://images.24city.com/jimmy/QQCapture/ 注:首次点击,会提示未安装ActiveX插件,下载安装成功后...

1887
来自专栏Danny的专栏

html页面导出为pdf(jsPDF、iText、wkhtmltopdf)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1.1K1
来自专栏丑胖侠

Win10系统,Intellij IDEA快捷键冲突

前两天系统盘损坏,升级到了Win10系统,重新装了软件,导致Intellij IDEA的快捷键各种冲突。本篇博客记录一下发型冲突的地方及修改方法。 冲突一 Ct...

30110
来自专栏魏艾斯博客www.vpsss.net

宝塔 Linux 面板 3.X/4.x 忘记密码解决方法

3172
来自专栏琯琯博客

超好用的谷歌浏览器、Sublime Text、Phpstorm、油猴插件合集

一、谷歌浏览器插件 二、Sublime Text 插件 三、Phpstorm 插件 四、油猴脚本 4.1 脚本网站 4.2 自用的脚本 五、相关链接 ? 分享...

1.1K8
来自专栏KaliArch

Python实现腾讯云CDB备份文件自动上传到COS

44617
来自专栏葡萄城控件技术团队

JavaScript 性能优化技巧分享

JavaScript 作为当前最为常见的直译式脚本语言,已经广泛应用于 Web 应用开发中。为了提高Web应用的性能,从 JavaScript 的性能优化方向入...

3424
来自专栏QQ音乐技术团队的专栏

【QQ音乐web团队】:ReactJS 服务端同构实践

最近在项目中接入了 ReactJS 并在服务端做了同构直出。关于 ReactJS 服务端同构业界已经有不少分享,这篇文章会主要注重实践的内容,把实现细节和遇到的...

3317

扫码关注云+社区

领取腾讯云代金券