极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10673|回复: 0

[翻译]]Arduino自带范例Digital之StateChangeDetection

[复制链接]
发表于 2012-11-18 19:49:52 | 显示全部楼层 |阅读模式
/*
翻译:tom
时间:2012年11月18日
IDE版本号:1.01
发表地址:www.geek-workshop.com
翻译说明: 根据arduino自带的范例进行翻译,可能根据实际的需要略作修改

*/
/*
  State change detection (edge detection)   (状态)变化检查

通常,你不需要知道数字输入端在所有时间的状态,但是你仅仅需要知道当输入(端)从一个状态变成另一个状态.
例如,你想知道当一个按纽的状态从OFF变成ON.这称之为变化检查或边缘检查.

这个例子展示如何侦查当一个按纽或按纽变化从OFF到ON,和从ON到OFF.

电路描述:
*按纽连接在数字端口2到+5V
*10K电阻通过2号端到GND
*LED 连接13号数字端至GND(或使用板载的LED)

created  27 Sep 2005
modified 30 Aug 2011
by Tom Igoe

        这个范例代码在公共范围(不受版权制约)
http://arduino.cc/en/Tutorial/ButtonStateChange

*/
/*
电路原理图

*/

//这个常量不会改变
const int  buttonPin = 2;    //pushbutton连接在2号数字端口
const int ledPin = 13;      //LED连接在数字端口13

//变量将改变
int buttonPushCounter = 0;   
//buttonPushCounter统计按纽按下次数的变量
int buttonState = 0;         
//buttonState当前按纽状态变量
int lastButtonState = 0;     //上次按纽状态变量lastButtonState

void setup() {

  //初始化按纽端口作为输入模式
  pinMode(buttonPin, INPUT);

  //初始化LED端作为输出模式
  pinMode(ledPin, OUTPUT);

  //初始化串口通信
  Serial.begin(9600);
}


void loop() {
  //读取pushbutton的输入值
  buttonState = digitalRead(buttonPin);

  //比较buttonState的状态和它上次的状态
  if (buttonState != lastButtonState) {
    //如果状态已经改变,计数器增长
    if (buttonState == HIGH) {
      //如果当前状态是HIGH
      //那么按纽状态从OFF变成ON
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    }
    else {
      //如果当前状态是LOW
      //那么按纽状态从ON变成OFF
      Serial.println("off");
    }
  }
  //存储当前状态作为上次状态
  //为下次通过循环(做准备)
  lastButtonState = buttonState;

  //打开LED每四次按纽按下时
  //检查模数放入计数器中
  //模函数给出剩余的两个数字

  if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }

}










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 23:27 , Processed in 0.042037 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表