#define buttonPin 25
#define LEDPin 26
#define LedPin 27
int buttonSter = LOW ; //當前狀態
int lastbutton = LOW ; //上一次的狀態
int
unsigned long buttonTime = 0 ;
unsigned long Time = 0 ;
bool led = LOW ;
bool LEDstate1 = LOW; //LED當前狀態
void setup() {
pinMode(buttonPin , INPUT_PULLUP);
pinMode(LEDPin , OUTPUT);
pinMode(LedPin , OUTPUT);
Serial.begin(9600);
}
void loop() {
int reading = digitalRead(buttonPin); //讀取按鈕當前的狀態
int time = millis();
if(reading != lastbutton){//如果狀態跟上一次不符 然後就紀錄時間
buttonTime = millis();
}
if((millis()-buttonTime) >= 50){//如果減完超過50ms認定穩定
if(reading != buttonSter){//如果偵測有一次跟上次不一樣久就更新buttonSter
buttonSter = reading;
if(buttonSter == LOW){//如果buttonSter=LOW就讓LED切換型態變成亮
led = !led;
digitalWrite( LEDPin ,led );//顯示led
if(led == HIGH){//led=HIGH就顯示led亮
Serial.println("led亮");
}
}else if (led == LOW){//led=LOW就顯示led滅
Serial.println("led滅");
}
}
}
//LED
lastbutton = reading ; //讀取現在狀態
if(time - Time > 100){//判斷是否超過100毫秒
Time = time ;//更新上一次的時間點
LEDstate1 = !LEDstate1 ;//切換LED型態
digitalWrite(LedPin , LEDstate1);//亮滅
}
}