- 代碼一 按下點亮 不按熄滅
int led = 13;
int button = 3;
void setup(){
pinMode(led,OUTPUT);
pinMode(button,INPUT);
}
void loop(){
Bstate = digitalRead(button);
if (Bstate){
digitalWrite(led,HIGH);
}else{
digitalWrite(led,LOW);
}
}

按一次點亮
- 按一次點亮 再按一次熄滅
int led = 13;
int button = 3;
int state = 0;
void setup(){
pinMode(led,OUTPUT);
pinMode(button,INPUT);
}
void loop(){
state = digitalRead(button);
if (state){
digitalWrite(led,state);
state = !state;
}
}
效果不對 理論上沒有錯

error
- 代碼檢查測試 抖動的原因
int led = 13;
int button = 3;
int state = 0;
int num =0;
void setup(){
pinMode(led,OUTPUT);
pinMode(button,INPUT);
Serial.begin(9600);
}
void loop(){
state = digitalRead(button);
if (state){
digitalWrite(led,state);
state = !state;
num++;
Serial.println(num);
}
}
測試結(jié)果
按下開關(guān) 數(shù)字跳動很快

抖動
- 改進版本 001 delay
int led = 13;
int button = 3;
int state = 0;
int num =0;
void setup(){
pinMode(led,OUTPUT);
pinMode(button,INPUT);
Serial.begin(9600);
}
void loop(){
state = digitalRead(button);
if (state){
digitalWrite(led,state);
state = !state;
num++;
Serial.println(num);
delay(200);
}
}

delay
- 最終改進版本2 flag
int state = 1;
int button = 3 ;
int led = 9;
int num=0;
int Before=0;
void setup(){
pinMode(led,OUTPUT);
Serial.begin(9600);
}
void loop(){
int Bstate = digitalRead(button);
//Serial.println(Bstate);
if (Bstate && Before==0){
digitalWrite(led,state);
state = !state;
num++;
Serial.println(num);
//delay(200);
Before =!Before;
}else if(Bstate ==0 &&Before == 1){
Before = !Before;
}
}

代碼

final
圖形化最終:

圖形化