#include <Servo.h>
Servo myservo; // สร้าง Object สำหรับควบคุมเซอร์โวมอเตอร์
int potPin = A0; // กำหนดขา Analog สำหรับ Potentiometer
int servoPin = 10; // กำหนดขา Digital สำหรับควบคุมเซอร์โวมอเตอร์
int startButtonPin = 3; // กำหนดขา Digital สำหรับปุ่ม Start
int stopButtonPin = 4; // กำหนดขา Digital สำหรับปุ่ม Stop
int val; // ตัวแปรสำหรับเก็บค่า Analog จาก Potentiometer
int angle; // ตัวแปรสำหรับเก็บค่าองศาของเซอร์โวมอเตอร์
bool isRunning = false;
// ประกาศตัวแปรชนิด bool ชื่อ isRunning เพื่อเก็บสถานะการทำงานของ Servo Motor
void setup() {
Serial.begin(9600); // เปิด Serial Monitor
myservo.attach(servoPin); // กำหนดขาควบคุมเซอร์โวมอเตอร์
pinMode(startButtonPin, INPUT_PULLUP);
// กำหนดขา Digital สำหรับปุ่ม Start เป็นขา Input พร้อม Pull-up resistor
pinMode(stopButtonPin, INPUT_PULLUP);
// กำหนดขา Digital สำหรับปุ่ม Stop เป็นขา Input พร้อม Pull-up resistor
}
void loop() {
// ตรวจสอบสถานะของปุ่ม Start
if (digitalRead(startButtonPin) == LOW) {
isRunning = true;
myservo.write(0); // เซ็ต Servo Motor ให้หมุนซ้าย
}
// ตรวจสอบสถานะของปุ่ม Stop
if (digitalRead(stopButtonPin) == LOW) {
isRunning = false;
myservo.write(180); // เซ็ต Servo Motor ให้หมุนขวา
}
// ตรวจสอบค่าต่าง ๆ ของ Potentiometer
val = analogRead(potPin); // อ่านค่า Analog จาก Potentiometer
float voltage = val * (5.0 / 1023.0); // คำนวณแรงดัน (Voltage) จากค่า Analog
if (voltage == 5.0) { // ถ้าแรงดันเกิน 5V
myservo.write(90); // เซ็ต Servo Motor ให้หมุนที่ 90 องศา
isRunning = false; // หยุดการทำงานของ Servo Motor
}
delay(100); // รอ 100 มิลลิวินาที
}