- 代码一 按下点亮 不按熄灭
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);
}
}
测试结果
按下开关 数字跳动很快
抖动
- 改进版本 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
图形化最终:
图形化
网友评论