實現按鈕功能
1、代碼
volatile byte LED;//定義LED燈
volatile boolean LastState;//定義狀態
volatile byte SW;//定義按鈕
volatile boolean Toggle;//電平狀態,高和低
volatile boolean b1;//定義記錄按鈕狀態
volatile boolean b2;//定義記錄按鈕狀態
volatile int click;//定義點擊次數
int mixly_digitalRead(uint8_t pin) {
pinMode(pin, INPUT);
return digitalRead(pin);
}
void setup(){
LED = 11;//賦值LED接11號數字管腳
SW = 8;//按鈕接8號數字管腳
LastState = true;
Toggle = true;
b1 = true;
b2 = true;
click = 0;
Serial.begin(9600);
LastState = mixly_digitalRead(SW);//獲取按鈕初始狀態,電平爲高1
Serial.println(LastState);
}
void loop(){
b1 = mixly_digitalRead(SW);//獲取當前按鈕狀態
Serial.println(b1);
if (b1 != LastState) {//判斷當前按鈕狀態和最後的狀態是否相等
delay(20);//去抖動,判斷按鈕是否真的被按下
b2 = mixly_digitalRead(SW);
if (b2 == b1) {
LastState = b1;
click = click + 1;//按鈕被按下,計數加1
}
}
if (click == 2) {//判斷按下兩次
click = 0;
Toggle = !Toggle;
pinMode(LED, OUTPUT);//控制LED的11號數字管腳電平高低
digitalWrite(LED,Toggle);
}
}
2、效果圖
3、相關鏈接:Github