运行 每次按下按钮编码一次 - Arduino
Run Code Once per Button Press - Arduino
每次按下按钮(digitalRead)时,我只能尝试将某些代码片段 运行 设为一次。
void setup() {
// Set up and init all outputs to off
pinMode(2, INPUT);
pinMode(7, INPUT);
Serial.begin(9600);
while (!Serial);
Serial.println("Test");
for(byte i = 0; i<OutputCount; i++){
pinMode( outputs[i][OutputPin], OUTPUT);
digitalWrite( outputs[i][OutputPin], LOW );
// Set up an event fuse for this output.
eventFuse.newFuse( i, outputs[i][OffTime], INF_REPEAT, OutputHandler );
}
// Set MsTimer2 for one second per tick.
MsTimer2::set(100, timerTick );
MsTimer2::start();
}
void loop(){
if (digitalRead(2) == HIGH) {
while (i < 1){
switchPos = 2;
MsTimer2::start();
i++;
}
}
else if (digitalRead(7) == HIGH) {
while (i < 1){
switchPos = 7;
MsTimer2::stop();
}
}
else {
switchPos = 0;
i = 0;
}
}
以上代码使用 MsTimer2 和 EventFuse 库附带的盒标准 Lamp 计时器示例。
在循环部分有一些 while 循环接缝成为无限循环。我只需要 war 到 运行 您在 while 循环中看到的代码。有什么想法吗?
如有任何帮助,我们将不胜感激!
谢谢
使用一些标志的简单实现:
int twoFlag, sevenFlag;
void loop(){
if (digitalRead(2) == HIGH) {
if (!twoFlag) {
switchPos = 2;
MsTimer2::start();
delay(10); // to avoid errors from chattering or bouncing
twoFlag = 1;
}
} else {
twoFlag = 0;
}
if (digitalRead(7) == HIGH) {
if (!sevenFlag) {
switchPos = 7;
MsTimer2::stop();
delay(10); // to avoid errors from chattering or bouncing
sevenFlag = 1;
}
} else {
sevenFlag = 0;
}
}
每次按下按钮(digitalRead)时,我只能尝试将某些代码片段 运行 设为一次。
void setup() {
// Set up and init all outputs to off
pinMode(2, INPUT);
pinMode(7, INPUT);
Serial.begin(9600);
while (!Serial);
Serial.println("Test");
for(byte i = 0; i<OutputCount; i++){
pinMode( outputs[i][OutputPin], OUTPUT);
digitalWrite( outputs[i][OutputPin], LOW );
// Set up an event fuse for this output.
eventFuse.newFuse( i, outputs[i][OffTime], INF_REPEAT, OutputHandler );
}
// Set MsTimer2 for one second per tick.
MsTimer2::set(100, timerTick );
MsTimer2::start();
}
void loop(){
if (digitalRead(2) == HIGH) {
while (i < 1){
switchPos = 2;
MsTimer2::start();
i++;
}
}
else if (digitalRead(7) == HIGH) {
while (i < 1){
switchPos = 7;
MsTimer2::stop();
}
}
else {
switchPos = 0;
i = 0;
}
}
以上代码使用 MsTimer2 和 EventFuse 库附带的盒标准 Lamp 计时器示例。
在循环部分有一些 while 循环接缝成为无限循环。我只需要 war 到 运行 您在 while 循环中看到的代码。有什么想法吗?
如有任何帮助,我们将不胜感激!
谢谢
使用一些标志的简单实现:
int twoFlag, sevenFlag;
void loop(){
if (digitalRead(2) == HIGH) {
if (!twoFlag) {
switchPos = 2;
MsTimer2::start();
delay(10); // to avoid errors from chattering or bouncing
twoFlag = 1;
}
} else {
twoFlag = 0;
}
if (digitalRead(7) == HIGH) {
if (!sevenFlag) {
switchPos = 7;
MsTimer2::stop();
delay(10); // to avoid errors from chattering or bouncing
sevenFlag = 1;
}
} else {
sevenFlag = 0;
}
}