// 定義按鈕和繼電器的引腳
const int greenButtonPin = 2; // 綠色按鈕引腳
const int blackButtonPin = 3; // 黑色按鈕引腳
const int relayPin = 4; // 繼電器控制引腳
// 記錄按鈕的狀態
int greenButtonState = LOW;
int blackButtonState = LOW;
// 用來追蹤當前的狀態
int buttonState = 0;
int Nhumy = 0;
void setup() {
// 設置按鈕引腳為輸入模式
pinMode(greenButtonPin, INPUT);
pinMode(blackButtonPin, INPUT);
// 設置繼電器引腳為輸出模式
pinMode(relayPin, OUTPUT);
// 初始化繼電器狀態為關閉
digitalWrite(relayPin, LOW);
// 初始化序列埠,以便除錯
Serial.begin(9600);
}
void loop() {
// 讀取按鈕狀態
greenButtonState = digitalRead(greenButtonPin);
blackButtonState = digitalRead(blackButtonPin);
// 當 Nhumy 等於 2 時進入 case 2
if (Nhumy == 2) {
buttonState = 2;
}
//11111111111111111111111111111111111111111111111111111111
Serial.print("第一:");
Serial.println(buttonState);
delay(3000);
//88888888888888888888888888888
// 當綠色按鈕被按下時,設置 buttonState 為 1
if (greenButtonState == HIGH) {
buttonState = 1;
// 使用 switch 語句根據 buttonState 來控制流程
switch (buttonState) {
case 1: // 綠色按鈕被放開後,啟動繼電器並進入下一狀態
Serial.println("綠色按鈕被按下,啟動馬達");
digitalWrite(relayPin, HIGH); // 啟動馬達
if (blackButtonState == HIGH) {
Nhumy = 2;
}
//2222222222222222222222222222222222222222222222222222
Serial.print("第2:");
Serial.println(buttonState);
delay(3000);
//88888888888888888888888888888
delay(3000); // 馬達運行3秒
digitalWrite(relayPin, LOW); // 停止馬達
// 如果黑色按鈕也被按下,更新 Nhumy 到 2
if (blackButtonState == HIGH) {
Nhumy = 2;
}
buttonState = 0; // 重置按鈕狀態
//3333333333333333333333333333333333333333333333333
Serial.print("第3:");
Serial.println(buttonState);
delay(3000);
//88888888888888888888888888888
greenButtonState == LOW;
break;
case 2: // 當按下黑色按鈕時進入此狀態
//444444444444444444444444444444444444444444444444444444444
Serial.print("第4:");
Serial.println(buttonState);
delay(3000);
//88888888888888888888888888888
Serial.println("黑色按鈕被按下,馬達運行2秒");
digitalWrite(relayPin, HIGH); // 啟動馬達
delay(2000); // 馬達運行2秒
digitalWrite(relayPin, LOW); // 停止馬達
buttonState = 0; // 重置狀態
Nhumy = 0; // 重置 Nhumy
break;
default:
buttonState = 0; // 預設情況重置 buttonState
Nhumy = 0;
break;
}
}
}