我很难尝试让每个按钮按下(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 Timer示例。
在循环部分中有一些while循环,它们接缝为无限循环。我所需要的只是一场战争来运行你在while循环中看到的代码只有一次。有什么想法吗?
非常感谢任何帮助!
由于
答案 0 :(得分:2)
使用一些标志的简单实现:
int time=0;
int x=1;
int w=2;
int y=1;
int h=1;
int t=6;
while (x != w && y != h) {
boolean s = Abc (a,b,c,time);
if (s == true) {
time = time+t;
x++;
}
else if (s = false) {
time = time++;
}
}
System.out.println(time);