• 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操作。
  • 相关阅读:
    Azure存储账户的日志分析方法
    导出zabbix监控数据
    centos7下kubernetes(18。kubernetes-健康检查)
    centos7下kubernetes(17。kubernetes-回滚)
    unity接入安卓SDK,与安卓相互通信
    (转)坐标 旋转 计算
    矩阵运算试验
    photonServer学习之连接数据库
    C#委托链
    git命令大全
  • 原文地址:https://www.cnblogs.com/cyang812/p/8954581.html
Copyright © 2020-2023  润新知