Arduino笔记实验(初级阶段)—Keypad小键盘


文章目录

  • Arduino笔记实验(初级阶段)—Keypad小键盘
  • 前言
  • 一、电路图
  • 二、集成库方案(Keypad)
    • 三方集成库
    • 代码
    • 实验效果展示
  • 三、基于Arduino原生方案
    • 4*4按键膜结构图
    • 代码
    • 实验效果展示
  • 四、实验核心技术点-矩阵开关
  • 实验总结

前言

自学笔记,没有历史知识铺垫(省略百度部分),博主基于C++代码编程,函数可以参考官网,或者下载Arduino IDE(工具),查看菜单:帮助->参考,系列性的记录核心的实用笔记,本章主要记录Arduino Keypad小键盘的实验与分析


IDE工具:Arduino IDE

组件:

  1. Arduino UNO R3 *1
  2. 面包版 *1
  3. 杜邦线若干
  4. 4x4按键膜(Keypad) *1

一、电路图

二、集成库方案(Keypad)

三方集成库

Keypad文档
三方集成库优点是便于使用,三方库在实际项目开发中应用非常普遍,由于对底层进行封装,不太利于基础学习,建议初学者养成阅读源代码的习惯

代码

#include <Keypad.h>const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 9, 10, 11}; //connect to the column pinouts of the keypadKeypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );void setup() {Serial.begin(9600);
}void loop() {char key = keypad.getKey();if (key != NO_KEY) {Serial.println(key);}
}

实验效果展示


三、基于Arduino原生方案

4*4按键膜结构图

此处仅做了按键的基础功能代码逻辑演示,能够实现不依赖三方库进行基础按键操作
逻辑其实很简单,4*4按键膜结构本质是一套二维数组(矩阵)开关,3个核心点:

  1. 使用同4*4按键膜结构的二位数组(矩阵),记录按键输出内容
  2. 建立两个记录矩阵行和列的数组,通过双重for循环来遍历两个数组的所有元素
  3. 利用数字引脚的INPUT和OUTPUT功能,检测二维数组中,哪个元素的电平被拉低,哪个元素就是被触发的元素

代码

const byte ROW_NUM = 4;
const byte COL_NUM = 4;
const byte rowPins[ROW_NUM] = {2, 3, 4, 5};
const byte colPins[COL_NUM] = {8, 9, 10, 11};
const char keymap[ROW_NUM][COL_NUM] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'*', '0', '#', 'D'}
};void setup() {Serial.begin(9600);for (byte r = 0; r < sizeof(rowPins); r++) {pinMode(rowPins[r], INPUT);digitalWrite(rowPins[r], HIGH);}for (byte c = 0; c < sizeof(colPins); c++) {pinMode(colPins[c], OUTPUT);digitalWrite(colPins[c], HIGH);}
}void loop() {for (byte r = 0; r < sizeof(rowPins); r++) {for (byte c = 0; c < sizeof(colPins); c++) {digitalWrite(colPins[c], LOW);int upKey = digitalRead(rowPins[r]);if (upKey == LOW) {Serial.println(keymap[r][c]);delay(300);digitalWrite(rowPins[r], HIGH);}digitalWrite(colPins[c], HIGH);}}}

实验效果展示

四、实验核心技术点-矩阵开关

通过上述两种方案实验可以看出,keypad实际上可以通过矩阵开关来实现,了解矩阵开关如何接入开发版中,可以扩展到更多的应用中.
如通过有限的引脚实现更多的功能,4*4按键膜,通过8个引脚可以获得16种按键操作,实际上,上面提供的三方库还可以监听按下,松开,长按等事件的监听,甚至通过多按键组合实现更大的操作空间,可以在日后的开发中灵活运用是关键所在

实验总结

本章主要以4x4按键膜为实验对象,扩展其实现原理,希望通过其原理,以后能够运用在更多场景中

Arduino笔记实验(初级阶段)—Keypad小键盘相关推荐

  1. Arduino笔记实验(初级阶段)—火焰传感器+有源蜂鸣器实验

    Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 文章目录 Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 前言 一.电路图 二.火焰传感器(4引脚)-有源蜂鸣器 代码 ...

  2. Arduino笔记实验(初级阶段)—继电器模块

    Arduino笔记实验(初级阶段)-继电器模块 文章目录 Arduino笔记实验(初级阶段)-继电器模块 前言 一.电路图 二.继电器模块实验 代码 实验效果展示 三.继电器模块 实验总结 前言 自学 ...

  3. 【Arduino笔记】超声波传感器的使用

    这里使用:超声波传感器HC-SR04型号,搭配SG90舵机. 超声波简介 测量距离:2 ~ 400cm 分辨率:0.3cm 测量频率:40Hz 测量角度:15° 工作电压:4.5 ~ 5.5V 工作电 ...

  4. java上机实验学习笔记————实验七 图形用户界面设计

    java上机实验学习笔记----实验七 图形用户界面设计 题一: 计算器程序雏形 该窗口模拟Windows的计算器功能,添加一个文本行和4个按钮,单击[1].[2].[+]按钮时,将按钮的标签添加到文 ...

  5. arduino物联网实验:光敏电阻实现光控小夜灯

    arduino物联网实验:光敏电阻实现光控小夜灯 实验材料: Uno R3开发板 配套USB数据线 面包板及配套连接线 1个LED灯 1个220Ω限流电阻 1个光敏电阻 1个1K普通电阻 实验步骤: ...

  6. Arduino笔记-调节呼吸灯频率实验

    这个实验介绍下:对呼吸灯频率进行修改,修改每次亮度改变延迟. 实验截图如下: 再来一张 后台打印如下: 连接线和结构图如下: 源码如下: int ledPin = 9; int pot = A0;vo ...

  7. Arduino笔记-外部中断实验(震动传感器实时亮灯)

    外部中断:达到实时响应处理事件的效果. 目前Ardinuo UNO引脚只有2个,一个是2号口,一个是3号口 在Ardinuo中中断函数,返回值为空,不能有参数 程序运行截图如下: 当感应到震动后: 这 ...

  8. Arduino 笔记。开篇

    之前写过关于外部中断使用的笔记了,但是始终没有正式的对Arduino开个头. 也许大家很早很早就听说过Arduino 的大名,但是Arduino 却在专业开发者眼中显得如此不二流, 如此低级.但是福利 ...

  9. Arduino 点灯实验

    目录 1.实验说明 2.实验原理 3.接线图 4.实验代码 5.代码说明 6.测试结果 1.实验说明 LED模块:它的控制方法非常简单,要想点亮LED,只要让它两端有一定的电压就可以. 实验中,我们通 ...

最新文章

  1. 癌症中克隆种群结构统计推断分析软件PyClone安装小记
  2. Office2019 Word 新建文档豆沙绿背景色失效零时解决方案
  3. opengl嵌入pyqt5编译的分割窗口中
  4. Java中使用Jedis连接Redis对Key进行操作的常用命令
  5. Nacos注册中心的部署与用法详细介绍
  6. consul之:ACL配置使用
  7. python代码画小狗_程序员教你用代码手绘一只可爱的小狗,正好拿去送给女朋友给她个惊喜...
  8. 提高.NET编程水平的50个要点(转载)
  9. EVERTEC是如何利用大型机帮客户省钱?
  10. 图 —— 特殊状态下的讨论
  11. CSS之clearfix清除浮动
  12. html画圣诞树—动态效果展示【炫酷合集 免费获取源码】
  13. html中optition默认类型,射频微电子学概论.PDF
  14. 现代优化算法 之 模拟退火
  15. 苹果手机怎么连接不了无线网络连接服务器,苹果手机连接wifi显示无互联网连接怎么办?...
  16. win无线网卡怎么进入监听模式_win10系统卸载网卡驱动的操作方法
  17. Heuristic function
  18. php如何本地运行_怎样在本地运行PHP
  19. ACE_Message_QueueACE_MT_SYNCH::putq ()使用时需要注意的地方
  20. 思考与总结:我对管理岗位的思考

热门文章

  1. 女生学计算机还是电气,工科行业基本都歧视女性
  2. 目标检测、视觉弱监督学习、大脑多模态成像技术等CV综述来了!图像图形学发展年度报告综述专刊!...
  3. 系统稳定性(基于matlab求传递函数特征根)
  4. 范宇的Python学习笔记
  5. 【图像分割】基于差分进化算法优化模糊熵实现多级图像阈值分割附matlab代码
  6. 君正T21 SDK编译注意事项
  7. springboot+druid+dynamic-datasource+mysql数据库密码加密
  8. 网易云信短信接口java_网易云短信接口测试
  9. 斐讯k2刷不死breed K2 22.5.11.14
  10. 统计学(第七版)第二章 数据的收集