37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
(资料图片)
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百三十一:YL-004老款20按键独立键盘 跑马灯矩阵键盘模块
4X4矩阵键盘
是单片机外部设备中所使用的排布类似于矩阵的键盘组。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4X4和8X8,其中用的最多的是4X4。
工作原理
矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4X4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。由于单片机IO端口具有线与的功能,因此当任意一个按键按下时,行和列都有一根线被线与,通过运算就可以得出按键的坐标从而判断按键键值。
行列扫描法原理1、使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行线都为高电平。2、在第一步判断有键按下后, 延时10ms消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下 一步,否则返回第一步重新判断。3、开始扫描按键位置,采用逐 行扫描,每间隔1ms的时间,分别拉低第一列,第二列,第三列,第四 列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置,分别把行值和列值储存在寄存器里。4、从寄存器中找到行值和列 值并把其合并,得到按键值,对此按键值进行编码,按照从第一行第一个一直到第四行第四个逐行进行编码,编码值从“0000” 至“1111” , 再进行译码,最后显示按键号码。
4*4矩阵键盘+4位独立按键+8位跑马灯组合模块
4*4矩阵键盘+4位独立按键+8位跑马灯组合模块参考电原理图
模块上4*4矩阵键盘有一个8脚的端口,理论上可以直接插到Arduino的0-7脚上,但0,1脚用于串口通信,所以只能选择2~13脚,这里选用了2-9脚。
Keypad Pin L1 –> Arduino Pin 2 (行)
Keypad Pin L2 –> Arduino Pin 3
Keypad Pin L3 –> Arduino Pin 4
Keypad Pin L4 –> Arduino Pin 5
Keypad Pin R1 –> Arduino Pin 6 (列)
Keypad Pin R2 –> Arduino Pin 7
Keypad Pin R3 –> Arduino Pin 8
Keypad Pin R4 –> Arduino Pin 9
测试矩阵键盘部分接线示意图
矩阵键盘所需库文件<Keypad>在Arduino IDE 或者以上版本中, 项目->加载库->管理库中搜索Keypad,然后安装即可。也可以下载库(需要下载库文件 /Chris--A/Keypad),然后手动添加到IDE中。
Arduino实验开源代码
串口输出16位矩阵键值
程序之二:矩阵键盘部分测试每个按键的按下与松开
实验串口返回情况
程序之三:矩阵键盘部分测试按键'*'和 '#'控制LED灯(板载13脚)
'#'键控制LED灯自锁开关,'*'键按下时LED闪烁,松开熄灭
测试跑马灯部分接线示意图
程序之四:测试跑马灯部分,循环逐个点亮,逐个熄灭
Arduino实验场景图
程序之五:测试跑马灯部分,循环单个熄灭
测试独立按键部分+跑马灯部分
程序之六:测试独立按键部分+跑马灯部分,按键控制跑马灯
实验开源图形编程(Mind+、编玩边学)
实验开源仿真编程(Linkboy )