我如何在接线中按一下按钮循环槽函数?
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);
}
我正在编写一个循环切换不同功能但无法正常工作的按钮。它总是到达开关中的第一个案例,但永远不会到达第二个案例。我以为我会使用“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);
}