#include <ESP32Servo.h>
const int servoPin = 18;
const int buttonPin =32;
Servo servo;
int oldValue = LOW; // 上一次的按鈕狀態
int currentPos = 0; // 目前的舵機角度,初始為 0 度
void setup() {
Serial.begin(115200);
servo.attach(servoPin, 500, 2400); // 初始化舵機
pinMode(buttonPin, INPUT); // 設定按鈕引腳為輸入
servo.write(0); // 初始舵機角度設為 0
}
void loop() {
int newValue = digitalRead(buttonPin); // 讀取按鈕的當前狀態
// 按鈕狀態有變化
if (newValue != oldValue) {
if (newValue == HIGH) { // 按鈕被按下
if (currentPos == 0) {
Serial.println("按鈕被按下 → 舵機轉到 90 度");
servo.write(90); // 轉到 90 度
currentPos = 90; // 記錄當前角度為 90
} else {
Serial.println("按鈕被按下 → 舵機回到 0 度");
servo.write(0); // 轉回 0 度
currentPos = 0; // 記錄當前角度為 0
}
}
oldValue = newValue; // 更新按鈕狀態
}
delay(25); // 避免按鈕彈跳
}