xiaogui 发表于 2015-8-12 16:24:28

关于 读取按钮按下的次数问题(详细版)

认真学习了   Arduino入门教程--第四课--按钮控制的LED延时开关 的教程,该教程的用按钮控制led灯,连接图和代码如下:

************************************************************
const int ledPin = 13;
const int buttonPin = 2;
int buttonState = 0;

void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if(buttonState == HIGH)
    digitalWrite(ledPin, HIGH);
else
    digitalWrite(ledPin, LOW);
}
************************************************************

在这基础上,能否实现读取按钮按下的次数,求教大神代码如何实现?

xinhoujue 发表于 2015-8-12 19:07:52

可以用 定时器 来做,例如:在500ms内记录按钮按下的次数,再根据次数决定程序的具体流向。

asdfcgdc 发表于 2015-8-12 20:02:22

楼上正解:lol:lol:lol

xiaogui 发表于 2015-8-12 20:26:22

xinhoujue 发表于 2015-8-12 19:07 static/image/common/back.gif
可以用 定时器 来做,例如:在500ms内记录按钮按下的次数,再根据次数决定程序的具体流向。

初学者,不是很理解:loveliness:请大神指点:1、定时器是算法实现还是硬件呢? 2、关键的500ms内记录按钮按下的次数不知道怎么实现?感谢感谢

lkc8210 发表于 2015-8-12 20:32:55

类似这样。。。
//************************************************************
const int ledPin = 13;
const int buttonPin = 2;
boolean buttonState = 0;
boolean OldState = 0;
int buttonPressCount = 0;

void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState & !OldState) {
    buttonPressCount++;
    delay(40);
}
OldState = buttonState;
if (buttonState == HIGH)
    digitalWrite(ledPin, HIGH);
else
    digitalWrite(ledPin, LOW);
}
//************************************************************

xiaogui 发表于 2015-8-12 23:01:39

lkc8210 发表于 2015-8-12 20:32 static/image/common/back.gif
类似这样。。。
//************************************************************
const int ledPin = 1 ...

学习了,收获很大,非常感谢!

mondaywoo 发表于 2015-8-13 12:57:36

初学者学习
页: [1]
查看完整版本: 关于 读取按钮按下的次数问题(详细版)