我如何在接线中按一下按钮循环槽函数?

How do I cycle trough functions on a press of a button in Wiring?

我正在编写一个循环切换不同功能但无法正常工作的按钮。它总是到达开关中的第一个案例,但永远不会到达第二个案例。我以为我会使用“prevButtState”,但后来想到了这种编码方式,但是好吧,它不起作用,我忘记了我打算如何使用它:D

我的代码:

#include "arduino.h"

int LED=13;
int butt=4;
int buttState=0;
int prevButtState=0; 
int counter=0;

void setup() {
pinMode(LED, OUTPUT);
pinMode(butt, INPUT);
}

void loop() {
    buttStatus();
    if (buttState==1){
        counter++;
    }
    switch(counter){
        case 1:
        digitalWrite(LED,HIGH);
        buttState=0;
        while(buttState==0){
        buttStatus();
        if (buttState==1){
        counter=2;
        }
        }
        break;
        case 2:
        digitalWrite(LED,LOW);
        buttState=0;
        while(buttState==0){
        buttStatus();
        if (buttState==1){
            counter=1;
            }
        }
        break;
    }
}

void buttStatus(){
    buttState=digitalRead(butt); 
}

想出了怎么做,我完全不明白切换状态在 C 中是如何工作的...

这是工作代码:

int LED=13;
int butt=4;
int buttState=0;
int currentButtState=0;
int prevButtState=0;
int counter=0;

void setup() {
pinMode(LED, OUTPUT);
pinMode(butt, INPUT);

}

void loop() {
    buttStatus();
    if (buttState==1){
        delay(25);
      buttStatus();
      if(buttState==0){
      currentButtState=prevButtState+1;
      }
    }else delay(100);
  
    switch(currentButtState){
        case 1:
        
        digitalWrite(LED,HIGH);
        prevButtState = currentButtState;
  
        break;
        case 2:
        digitalWrite(LED,LOW);
        prevButtState = 0;
        
        break;
    }
}

void buttStatus(){
    buttState=digitalRead(butt); 
}