zoukankan      html  css  js  c++  java
  • Arduino 按键实验

    一、功能

    实现按键控制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操作。
  • 相关阅读:
    Java_static
    Java_字符串操作
    Java_==
    Java_字符串
    Java_Random
    Java_Scanner
    杨辉三角
    颜色分类
    字符串倒序
    jQuery的基本事件
  • 原文地址:https://www.cnblogs.com/cyang812/p/8954581.html
Copyright © 2011-2022 走看看