问题描述
我有一个正在接受输入的按钮,当我按下该按钮时,指示灯会切换。
现在,我通常在循环功能中切换一次灯光,这有点混乱。
我不希望它在按住按钮时不断切换。
这是我当前的代码:
bool inBoxLightsEnabled = false;
void setup() {
//Analog pin mode
pinMode(A0,INPUT);
//Digital pin mode
pinMode(2,OUTPUT);
}
bool buttonPressRecieved = false;
void loop() {
if(analogRead(A0) >= 1000) {
if(!buttonPressRecieved) {
//The button has been pressed and not recieved yet so process it
inBoxLightsEnabled = !inBoxLightsEnabled;
buttonPressRecieved = true; //We have received the button press so make sure we don't receive it again
}
} else {
buttonPressRecieved = false; //The button stopped being pressed so make this false
}
digitalWrite(2,inBoxLightsEnabled);
}
没关系做这种清洁剂是可以的,但是我需要知道是否可以这样做。
我还使用了AnalogRead,因为当我将DigitalRead用作输入时,digitalRead似乎在开和关之间闪烁。
有人知道吗?
解决方法
也许这会有所帮助:
/api/.env
这将在按下按钮时触发功能。 不知道这是否对您有帮助,因为您的问题对我来说还不是很清楚,但是我认为这可能会解决。 这个怎么运作: 当循环正在运行并且按下按钮时,buttonState为true,buttonStateBefore为false。真> 1,假为0,则真大于假。因此,函数doStuff()被调用。之后,buttonStateBefore是buttonState,因此它也适用。如果在下一个圆圈中仍按此按钮,则两个按钮都为true,因此不会调用该函数。
,不确定analogRead()
的含义,因为您没有解释。
就切换操作而言,它可以通过以下一行完成:
digitalWrite(2,!digitalRead(2));