图片里只要有二维码就涉嫌违规??这让我做二维码模块教程的如何是好!!!
鸽了好久好久的二维码模块教程

案例跳转

  • 例一
  • 例二
  • 例三(软串口)

本教程内容:通过Arduino+GM65二维码模块实现可以根据输入的字符串(扫描到二维码包含的信息)不同而执行不同的命令,并且命令只执行一次,而不是判断后重复执行,这个功能用到了自动初始化:
GM65的一系列设置可以通过让它自己扫描用户设置手册里带的二维码设置好。
用户设置手册点击这里找到普通下载

下面给出常用的设置:波特率设置,我用的9600,后边程序里也用的9600,不管你用多少,程序里对arduino的设置和 你扫码对二维码设置的还有串口监视器(串口助手)里面设置的都必须一致。


如果你不喜欢它一直亮灯,你可以把灯关掉(扫描无照明对应的二维码)。


和电脑连用USB口,加上那个USB线,和单片机连的话用UART,一般是在电脑上调好了再上单片机。
上单片机之前扫一下这个:

例一

这是一个自动复位的函数,在总程序里面已经调用了。

void(* resetFunc) (void) = 0;
resetFunc();

连线

ARDUINO GM65
5V 5V
GND GND
RX TX
TX RX

下面是总程序,直接复制就行,烧录的时候不要把arduino的RX、TX和GM65连接,否则会报错。

String inputString="";
void(* resetFunc) (void) = 0;
void setup()
{Serial.begin(9600);
}void loop()
{int i;while(Serial.available()){inputString+=char(Serial.read());delay(2);//不加延迟的话,USART内部的发送速度远大于接收速度,从而导致每到一个新字节,//进入一次available()发送出去后,就没有新的数据发送了,从而立即执行下面的打印命令!}if(inputString[0]=='1'&&inputString[1]=='2'&&inputString[2]=='3'){Serial.println("YES!");for(i=0;i<3;i++){Serial.println(inputString[i]);}delay(100);resetFunc();}else if(inputString==""){}if(inputString==""){}else if(inputString[0]!='1'||inputString[1]!='2'||inputString[2]!='3'){String QRcode=String(inputString[0])+String(inputString[1])+String(inputString[2]);Serial.println("NO!");Serial.println(QRcode);delay(100);resetFunc();}
}

我右侧的二维码信息是"123",我在程序中写到的是如果读到输入的前三位字符分别为1、2、3,时,串口打印YES!,以及前三位字符。
注意我的在向串口输出部分的写法,如果收到的不是"123"的话,把数组中的三个值转换成字符串然后合并成新的字符串,一起输出。


前一个二维码信息是123,后一个是321,注意输出的样式。

例二

起到和案例一一样的效果,也是常见的用法。主要是如果你在等待它输入一个你已经知道的值,比如我的例子里我在等二维码扫进一个“123”,我可以用Serial.find(字符型)函数,括号里必须是字符型,需要注意下面程序第一行的声明形式,这是一个字符数组。
当然你也可以这么写第一行,这是标准的字符数组的写法——加上花括号:
char input_code[]={“123”};

char input_code[]="123";
void(* resetFunc) (void) = 0;void setup()
{Serial.begin(9600);
}
void loop()
{if(Serial.available() > 0){if(Serial.find(input_code)){Serial.println("YES!");delay(100);resetFunc();}else{Serial.println("No!");delay(100);resetFunc();}}
}

例三(软串口)

#include <SoftwareSerial.h>
char input_code[]={"123"};
void(* resetFunc) (void) = 0;
SoftwareSerial QRcode(10, 11);//RX;TXvoid setup()
{QRcode.begin(9600);Serial.begin(9600);
}
void loop()
{if(QRcode.available() > 0){if(QRcode.find(input_code)){Serial.println("YES!");delay(100);resetFunc();}else{Serial.println("No!");delay(100);resetFunc();}}
}

这里就不多说了,和之前一样的原理,但是我们用10和11这两个普通IO口起到串口的功能(分别对应RX与TX)。
这样有什么好处呢?我们知道当GM65占用了arduino的RX与TX时是不能烧程序进去的,因为上载程序也是用的RX与TX脚位,但是有了软串口之后GM65不再占用arduino的RX与TX,烧程序也可以不用拔下那两根通信的线。
也就是当arduino的RXTX另有作用的时候,软串口的强大就体现出来了。
此外你还可以用switch的方法检测字符等等,后面有时间再更新新的思路,一下子全写上不现实。
有错误烦请指正,有问题欢迎留言!

参考文章:
[1]:Arduino串口通信(Serial)
[2]:Arduino重置-复位
[3]:GM65条码识读模块用户设置手册
[4]:关于软串口

Arduino+GM65(二维码模块)常见用法相关推荐

  1. 二维码URL多种用法总结

    二维码URL多种用法 一.二维码的类型 1.专属App的二维码 2.通用的URL网页 二.二维码判断:User Agent(UA) 三.二维码精进:URL+参数 四.二维码推广:携带参数安装 五.二维 ...

  2. 详解 Python qrcode 二维码模块

    原文链接 摘要: 详解 Python qrcode 二维码模块. 项目地址 https://github.com/lincolnloop/python-qrcode 声明 importqrcode 使 ...

  3. 同时挂载二维码模块与4G模块时,导致4G模块连不上网都是USB设备)

    一.BUG现象 今天公司设备出现一个问题,在RK3399上的USB上插着三个设备,分别是4G模块.二维码模块与身份证模块,在这三个设备同时插在设备上时再开机,会出现4G模块连不上网络的情况,无论怎么插 ...

  4. GM65条形码二维码扫描识别模块与STM32学习

    目录 模块介绍: 简介: 原理介绍: 工作流程: 技术参数: 修改配置: 代码介绍: 串口函数: 主函数: 模块介绍: 简介: GM65 条形码二维码扫描识别模块是一种基于激光扫描头的识别设备 原理介 ...

  5. 常见二维码上那些奇怪的图案是什么

    专题:神奇二维码  改变生活方式的黑白方块 常见的二维码上为啥三个角上有方块 这是三个定位点,图形旋转也不影响识别 要了解二维码的原理,我们先要来好好认识一下它.现在最常见的二维码是QR二维码(QR是 ...

  6. APIcoud 手机二维码or条码 生成与扫描模块

    APIcoud 手机二维码or条码 生成与扫描模块 刚接触APIcoud 的时候觉得很多模块真的好难,初次接触二维码的时候觉得,生成二维码真的很费劲呢,其实不然,是真的很难,但是APIcoud 已经封 ...

  7. K210学习笔记(十)——二维码识别

    前言 MAIX BIT(K210)和openmv在传统视觉处理这个方面代码是通用的,掌握K210的色块识别和二维码识别其实也掌握了openmv对应的用法. 一.二维码是什么? 二维码 (2-dimen ...

  8. 你知道二维码的图案原理吗?

    常见的二维码上为啥三个角上有方块?二维码为什么是黑白相间的?为什么扫二维码的一部分也能看到信息?请看南京邮电大学计算机学院副教授黄海平做详细分析. 随着苹果手机的研发及安卓系统的市场铺张式的发展,使得 ...

  9. Python制作二维码和条形码扫描器 (pyzbar)

    条码在生活中随处可见,其可分为三类:一维条码.二维条码.三维条码 一维条码: 我们平时习惯称为条形码.条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常见的条 ...

最新文章

  1. springboot 跨域解决方案
  2. 台式机 双显卡切换实战
  3. 算法竞赛入门与进阶 (二)单调队列、单调栈
  4. ipad能安装python么_ipad能下载python么
  5. 使用CAtlRegExp正则表达式检查浮点数输入
  6. nodejs调试ndb_如何开始使用NDB调试NodeJS应用程序
  7. 开发者账号申请 真机调试 应用发布
  8. 用Python快速实现视频的人脸融合
  9. ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
  10. svn删除文件出错的经验总结
  11. 华为紧盯Android专利战: 置身事外几无可能
  12. 火车头采集器php,火车头采集器3.0采集图文教程
  13. 小工程结算书范本_工程结算书范本.doc
  14. mybatis 中文官网
  15. 按计算机应用领域分类 情报检索系统属于,2014年高职单招计算机类模拟试卷一(环职职专)...
  16. 对一个数组排序之后求相邻数的最大差值
  17. 软件工程毕业设计课题(37)基于JAVA毕业设计JAVA核酸预约系统统毕设作品项目
  18. 在word文档中,解决求和符号的上下标变成右标.
  19. 笔记本当服务器显示屏,笔记本当服务器屏幕设置
  20. euclidea4攻略_Euclidea几何构建10.4通关攻略

热门文章

  1. 形态学——图形学形态学处理
  2. ASUS华硕ZenBook灵耀X双屏UX482EAR_UX4100EAR原装出厂系统恢复原厂系统
  3. taobao.logistics.dummy.send( 无需物流发货处理 )接口,淘宝店铺发货API接口,淘宝r2接口,淘宝oAu2.0接口,淘宝订单发货接口
  4. SCPC / ACM2015国庆培训正式赛
  5. PTA浙大版《C语言程序设计(第3版)》习题4-8 高空坠球
  6. ubuntu18.04 设置桥接模式
  7. 卷积神经网络模型之——GoogLeNet网络结构与代码实现
  8. 苹果电脑安装XP无声音问题的解决
  9. Windows10如何实现开机按F8进入传统旧版的安全模式
  10. 《3D打印:三维智能数字化创造(全彩)》