每按一次运行代码按 - Arduino

时间:2015-11-09 03:20:11

标签: c loops while-loop 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 Timer示例。

在循环部分中有一些while循环,它们接缝为无限循环。我所需要的只是一场战争来运行你在while循环中看到的代码只有一次。有什么想法吗?

非常感谢任何帮助!

由于

1 个答案:

答案 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);