Arduino 按键实验

原创 2017年08月19日 20:14:35

一、功能

实现按键控制LED亮灭。按下点亮,再次按下熄灭。

二、原理图

这里写图片描述

三、代码

int ButtonState;
int ButtonLastState;
int ButtonCounter;

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);
  pinMode(11,INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  ButtonState = digitalRead(11);

  if(ButtonState != ButtonLastState)
  {
    if(ButtonState)
    {
        Serial.println("on");
        ButtonCounter++;
    }
    else
    {
      Serial.println("off");  
    }
    delay(100);
  }

  ButtonLastState = ButtonState;
  if(ButtonCounter%2)
  {
    //Serial.println(ButtonCounter);
    digitalWrite(13,1);  
  }
  else
  {
    digitalWrite(13,0);  
  }
}

四、解析

  • 1、开关通过一个数字接口连接到 arduino,端口配置为上拉输入。在默认情况下,端口电平为高,按键按下时,端口被拉低。
  • 2、理想情况下,一次按键对应着一个下降沿,一段低电平,一个上升沿。程序通过ButtonStateButtonLastState两个标志位来判断电平情况,通过这两个标志位实现了下降沿和上升沿进入第一个判断语句,即if(ButtonLastState != ButtonState),只不过下降沿和上升沿所处理的操作不同,下降沿不做处理,仅打印一条语句,上升沿时候则代表按键被按下并且已经放开了,则对按键次数进行加一。
  • 3、要实现,按下点亮,再次按下熄灭,只需要对按键次数进行模2操作。
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问个人主页 http://cyang.tech

【Arduino官方教程第一辑】示例程序 2-5 按键状态改变的探测

按键状态改变的探测在使用按键时,你经常想要根据按键被按下的次数进行不同的操作。为了做到这一点,你需要知道什么时候按键从闭合到断开,并记录这种变化发生的次数。这就是所谓的按键状态探测(或者说边缘检测)。...
  • amagamag
  • amagamag
  • 2016年04月26日 19:22
  • 2757

【Arduino官方教程第一辑】示例程序 2-3 按键去抖

由于物理性质和机械特性的原因,矩阵按键经常在按下后的一小段时间产生不定状态。这很可能被程序误认为是短时间内的多次按键操作。本例向你展示如何进行按键去抖。...
  • amagamag
  • amagamag
  • 2016年04月21日 16:45
  • 3678

Arduino Uno 使用 4x4 矩阵按键 实现你家的密码锁吧

实现效果 占用8个IO口 ,实现16个不同的按键 可应用于计算器,电子门锁,等等需要输入的场景 BOM表 Arduino Uno   *1 4x4 矩阵键盘   *1 跳线若干 ...
  • ling3ye
  • ling3ye
  • 2017年06月21日 12:16
  • 3532

【Arduino官方教程】数字处理示例(五):按键状态变化检测

【Arduino官方教程】数字处理示例(五):按键状态变化检测(State Change Detection) 在使用按键的过程中,经常会遇到要根据按键按下的次数来做一些处理。要做到这一点,我们需要知...
  • woshi_ziyu
  • woshi_ziyu
  • 2016年07月18日 21:55
  • 1176

Arduino 用两个按键分别控制两个LED灯点亮

实验简介 使用两个按键,分别控制两个LED灯的点亮与关闭。 按一下,亮,再按一下灭,走起...... 先说明一下4脚按键开关的工作原理 示例效果 BOM表 Arduino Uno    *...
  • ling3ye
  • ling3ye
  • 2016年10月26日 15:28
  • 6377

【Arduino】1.2 按键的使用

#define LED 13 #define BUTTON 7 int val=0; void setup() { pinMode(LED,OUTPUT); pinMode(BUTTON,INPUT...
  • kajweb
  • kajweb
  • 2016年07月30日 16:51
  • 194

Arduino系列教程-06 按键控制

本教程来至yingcloud.com网站 使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,我们用一个按键和一个LED 小灯完成一个输入输出结合使用的实验,让大家能简单了解I/O...
  • yingcloud
  • yingcloud
  • 2014年02月10日 10:28
  • 5394

Arduino 按键实验

一、功能实现按键控制LED亮灭。按下点亮,再次按下熄灭。二、原理图三、代码int ButtonState; int ButtonLastState; int ButtonCounter;void se...
  • u011303443
  • u011303443
  • 2017年08月19日 20:14
  • 440

【Arduino官方教程第一辑】示例程序-目录

译者序:即将进入大学学习,我谨以本文档的来作为我CSDN博客的开篇。前段时间看了许多文章,便觉得作为一个程序员开通自己的技术博客是十分重要的。因为这样做不仅能够提高自己的技术水平、将知识做巩固和回炉,...
  • amagamag
  • amagamag
  • 2016年04月15日 18:28
  • 11220

【Arduino官方教程】数字处理示例(三):按键防抖

按键防抖(Debounce) 按键在按下时,由于机械和物理特定的原因,经常会产生一些开关变换,而这些变换会让程序误认为是短时间内进行了多次按键。本示例展示了如何对输入信号进行防抖,也就是在一段短时间...
  • woshi_ziyu
  • woshi_ziyu
  • 2016年07月06日 22:09
  • 1197
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Arduino 按键实验
举报原因:
原因补充:

(最多只允许输入30个字)