2017-08-04 87 views
1

我刚刚开始修改arduino,并且我正在掌握基本知识。我有一个按钮,所以我得到一个串行打印时,它被推。阅读arduino上的按钮输入

int button = 3; 

void setup() { 
    Serial.begin(9600); 
    pinMode(button, INPUT_PULLUP); 
} 

void loop() { 
    if (digitalRead(button) == LOW) { 
    Serial.print("pressed\n"); 
    } 
} 

现在,当按钮被按下时,它会打印pressed一束直到释放。现在我的下一步是连接一个LED,并且我想使用该按钮作为切换。第一次按下它,它会亮起来,按下它一秒钟,它就会关闭。但按下按钮时,这将运行数百次。我如何解决这个问题?谢谢

int led = 5; 
int button = 3; 

void setup() { 
    Serial.begin(9600); 
    pinMode(button, INPUT_PULLUP); 
    pinMode(led, OUTPUT); 

    digitalWrite(led, LOW); 
} 

void loop() { 
    if (digitalRead(button) == LOW) { 
    Serial.print("pressed\n"); 
    toggleLed(led); 
    } 
} 

int toggleLed(int led){ 
    if (digitalRead(led) == LOW) { 
    Serial.print("set on"); 
    digitalWrite(led, HIGH); 
    } else { 
    Serial.print("set off"); 
    digitalWrite(led, LOW); 
    } 
} 

回答

0

有一个示例代码随Arduino IDE一起被称为状态更改示例。研究它。基本上你需要有一个变量来记住上次按下按钮时的按钮状态,而你只对按钮状态的变化做出反应。无论何时按钮引脚为低电平,只要按钮引脚从高电平变为低电平,就可以运行代码。

+0

这将是**文件>示例> 02.Digital> StateChangeDetection **? – per1234