#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);  // 避免按鈕彈跳
}