• 用Tinkercad学arduino之 状态变化检测(边缘检测) 按4次亮灯


    /*
    
      State change detection (edge detection)
      状态变化检测(边缘检测)
    
      Often, you don't need to know the state of a digital input all the time,  but you just need to know when the input changes from one state to
      another.  For example, you want to know when a button goes from OFF to ON.  This is called state change detection, or edge detection.
       
      通常,您不需要知道状态一直使用数字输入,但您只需要知道输入何时从一种状态变为另一个。 例如,您想知道什么时候按钮从OFF变为ON。 这就是所谓的状态变化检测或边缘检测。
     
      This example shows how to detect when a button or button changes from off to on  and on to off.
      本示例说明如何检测按钮或按钮从关闭变为打开,然后从打开变为关闭。
    
      The circuit:
      * pushbutton attached to pin 2 from +5V
      * 10K resistor attached to pin 2 from ground
      * LED attached from pin 13 to ground (or use the built-in LED on  most Arduino boards)
      电路:
       * 按钮从5V连接到引脚2
       * 10K电阻从地连接到引脚2
       * LED从引脚13接地(或使用大多数Arduino板上的内置LED)
    
      This example code is in the public domain.
      http://www.arduino.cc/en/Tutorial/ButtonStateChange
    */
    
    int buttonState = 0;
    
    int lastButtonState = 0;
    
    int buttonPushCounter = 0;
    
    void setup()
    {
      pinMode(2, INPUT);
      Serial.begin(9600);
    
      pinMode(13, OUTPUT);
    }
    
    void loop()
    {
      // read the pushbutton input pin
      buttonState = digitalRead(2);
      // 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
          // went from off to on
          buttonPushCounter += 1;
          Serial.println("on");
          Serial.print("number of button pushes: ");
          Serial.println(buttonPushCounter);
        } else {
          // if the current state is LOW, then the button
          // went from on to off
          Serial.println("off");
        }
        // delay a little bit to avoid debouncing
        delay(5); // Wait for 5 millisecond(s)
      }
      // save the current state as the last state, for
      // the 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 devision of two numbers
      //通过检查按钮按下计数器的模数,每四个按钮按下一次即可打开LED一次。
      //模函数返回两个数相除的余数
      if (buttonPushCounter % 4 == 0) {
        digitalWrite(13, HIGH);
      } else {
        digitalWrite(13, LOW);
      }
    }
  • 相关阅读:
    Cipherlab CPT9300手持扫描枪开发体验 [转]
    引用(ajaxfileupload.js) ajaxfileupload.js报jQuery.handleError is not a function错误解决方法
    C#锐利体验2.0:泛型编程
    Visual C#中调用Windows服务初探
    C#操作XML代码整理
    个人代码库のC#背景色渐变的功能
    ~~ C#数字时钟 ~~
    DevExpress随笔10.1.5的汉化与破解
    用C#获取局域网内所有机器
    C# 图片格式(JPG,BMP,PNG,GIF)等转换为ICO图标
  • 原文地址:https://www.cnblogs.com/meetrice/p/14077685.html
Copyright © 2020-2023  润新知