#include <ESP32Servo.h>
const int buttonPin = 25; // กำหนดขาปุ่มกด
const int servoPin = 16; // กำหนดขาเซอร์โว
Servo myServo; // สร้างวัตถุเซอร์โว
int lastButtonState = LOW; // ตัวแปรเก็บสถานะปุ่มกดก่อนหน้า
int servoPosition = 0; // ตัวแปรสำหรับเก็บตำแหน่งเซอร์โว
void setup() {
Serial.begin(115200);
myServo.attach(servoPin); // เชื่อมต่อเซอร์โวที่ขา
pinMode(buttonPin, INPUT); // กำหนดขาปุ่มกดเป็น INPUT
myServo.write(0);
}
void loop() {
int buttonState = digitalRead(buttonPin); // อ่านสถานะปุ่ม
// ตรวจสอบการเปลี่ยนแปลงสถานะปุ่ม
if (buttonState == HIGH && lastButtonState == LOW) {
// เปลี่ยนตำแหน่งเซอร์โว
if (servoPosition == 0) {
Serial.println("servo is on");
servoPosition = 180; // เปลี่ยนตำแหน่งเป็น 180 องศา
} else {
Serial.println("servo is off");
servoPosition = 0; // กลับไปที่ 0 องศา
}
myServo.write(servoPosition); // ตั้งค่าตำแหน่งเซอร์โว
delay(500); // รอครึ่งวินาทีเพื่อหลีกเลี่ยงการกดซ้ำ
}
lastButtonState = buttonState; // เก็บสถานะปุ่มกดก่อนหน้า
}