arduino 按钮读取_Arduino内置教程-数字-检测按键状态
如果你让按键工作,你经常会想做一些要按下很多次按钮的才有响应的动作。这时你需要知道按钮的从闭合到断开的变化状态,然后记录这个状态发生了多少次。这叫状态变化检测或者边沿检测。在这个教程里我们学习怎样检查状态变化,然后我们把相关信息发送到串口监视器里,并记录4次LED灯的开和关。
简介
如果你让按键工作,你经常会想做一些要按下很多次按钮的才有响应的动作。这时你需要知道按钮的从闭合到断开的变化状态,然后记录这个状态发生了多少次。这叫状态变化检测或者边沿检测。在这个教程里我们学习怎样检查状态变化,然后我们把相关信息发送到串口监视器里,并记录4次LED灯的开和关。
硬件要求
Arduino or Genuino 开发板
即时按钮或者开关
10kΩ电阻
连接线
面包板
电路
连接3根线到开发板。最开始两根,红和黑,连接到面包板上的两个长垂直行来提供5V电源电压和地。第三根线从数字引脚pin2连接到按钮的一个引脚。按钮的同一个引脚连接下拉电阻(10k ohm)到地。按钮的另一个引脚连接到5V电源。
按钮或者开关连接电路的两点。按钮是断开的(未按),按钮两个引脚是没有接通的,所以这个引脚连接到地(通过一个下拉电阻),读取为低电平或者0。当如果按钮是闭合的(未按),按钮两个引脚是接通的,所以这个引脚连接到5V,读取为高电平,或者1。
如果你没有连接到数字I/O口到任何地方,LED灯可能会不规则闪烁。这是因为输入引脚处于悬浮状态——它没有固定连接到电源或者地,并且它会随机在高电平和低电平之间切换。这是你需要下拉电阻的原因。
原理图
样例代码
下面的代码连续读取按钮的状态。然后通过循环来对比这个按钮的状态和它上一段时间的状态。如果当前按键的状态和之前的状态不一样并且当前状态是高电平,那么这个按键刚从关变为开。然后程序增加按键按下的计数器。
这个程序也检查按键按下次数的值,并且如果它是4的倍数,它会打开pin13的LED灯,否则这个LED灯饰熄灭的。
// this constant won't change:
const int buttonPin = 2; // the pin that the pushbutton is attached to
const int ledPin = 13; // the pin that the LED is attached to
// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the LED as an output:
pinMode(ledPin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
}
void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println("off");
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state,
//for next time through the loop
lastButtonState = buttonState;
// turns on the LED every four button pushes by
// checking the modulo of the button push counter.
// the modulo function gives you the remainder of
// the division of two numbers:
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
arduino 按钮读取_Arduino内置教程-数字-检测按键状态相关推荐
- arduino 读取模拟电压_Arduino内置教程-基本原理-读取模拟电压
读取模拟电压 这个例子展示怎样读取一个在模拟引脚PIN 0上的模拟输入,把analogRead()的值转换成电压,然后打印到Arduino IDE的串口监视器里. 硬件要求 Arduino or Ge ...
- arduino 按钮读取_arduino教程系列6-按键实验 arduino入门,arduino教程
按键是一种常用的控制电器元件,常用来接通或断开电路,从而达到控制电机或者其他设备运行的开关.按键的外观多种多样,本次实验使用的是这种微型按键,6mm的,如下图. 2011-7-21 20:11 上传 ...
- arduino 按钮读取_arduino Uno3中的按钮开关问题
// 按钮开关: GND ---按钮--- Pin 1 /// int bounce = 88; // bounce time for 抖动判断; you can change it int btn ...
- Freemarker 内置函数 数字、字符串、日期格式化用法介绍
在用FreeMarker过程中,感觉FreeMarker的字符串,日期,集合等处理能力还是很强大的,上网搜了一些资料,整理如下,以便能帮助大家更熟练的应用Freemarker完成项目开发. 一.Seq ...
- python内置的数字运算函数_Python 内置函数1
abs(x)函数 返回绝对值 参数可以是:负数.正数.浮点数或者长整形 print(abs(-1.2)) # 结果1.2 cmp(x, y)函数 (python3已删) 中文说明: 比较两个对象x和y ...
- arduino 蓝牙示例_Arduino蓝牙编程教程
步骤1:编程HC 05蓝牙模块 材料 1. Arduino Uno或任何开发板 2.跳线 3.如图所示,具有Arduino IDE的笔记本电脑 将HC 05与Arduino连接. 这是连接的简单概述 ...
- struts2:在Action中使用Servlet的API,设置、读取各种内置对象的属性
有两种方式可以实现在Action中使用Servlet的API.一种是使用org.apache.struts2.ServletActionContext类,另一种是使用com.opensymphony. ...
- STM32白话文教程(三)内置按键模块、外接按键检测 三句话让你玩明白按键 水银倾斜模块
还不知道检测输入电平信号用什么输入模式? 就简单的记住: 检测端口输入低电平0要用上拉 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 检测端口输入高电平1 ...
- 数字、字符串、列表类型及常用内置方法
目录 可变不可变类型 基本数据类型及内置方法 数字类型 整型 浮点型 数字类型总结 字符串类型 字符串类型的常用操作+内置方法 字符串类型总结 列表类型 列表类型的常用操作+内置方法 列表类型总结 可 ...
最新文章
- PADS Layout VX.2.3 修改层名
- Linux-Raid0、Raid1、Raid5、Raid10初探
- 03 | 事务隔离:为什么你改了我还看不见
- SAP Marketing Cloud里的contact main facet是什么意思
- 成都Uber优步司机奖励政策(1月26日)
- 企业微信开发步骤 1.拿到企业的id,在我的企业,拖到最下面拿到企业id 2.拿到SECRET,这个secret只有先创建应用才会产生出来...
- StretchBlt()函数
- IOS之OC语言简介
- 「网络流 24 题」负载平衡
- linux安装ipk游戏,添加软件包 IPK
- word表格分开快捷键_Word使用技巧(表格技巧、快捷键)
- Tiny6410 的NandFlash(K9GAG08U0E)
- html 背景颜色设置为透明,css如何设置背景颜色透明?css设置背景颜色透明度的两种方法介绍...
- Linux之open虚拟专业网安装部署
- 临江仙·送钱穆父 | 苏轼
- ArcGIS笔记2_如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系
- Edge AI边缘智能:Communication-Efficient Edge AI: Algorithms and Systems(未完待续)
- Led智慧照明系统功能
- 【腾讯云原生降本增效大讲堂】云原生混部技术标准解读
- 今天真TMD闹心 哎呦我去了!!
热门文章
- 文具订购(【CCF】NOI Online能力测试 入门组第一题)
- 《南溪的python灵隐笔记》——有趣的Munch字典库
- 目标检测——YOLOV5的学习笔记(legcay)
- Python 获取剪切板
- 常用的Opencv函数汇总(持续更新...)
- 背包九讲 ----- 01背包问题模版
- IO流 (一) ----- 基本概念和FIle类
- [BZOJ]3727: PA2014 Final Zadanie
- 【Hadoop】HDFS笔记(三):HDFS的Shell操作
- 2012年8月20日 我单身了!