//ควบคุมด้วยสวิต stepper Motor
#include <Stepper.h>
const int stepsPerRevolution = 200;  
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
// กำหนดปุ่ม
const int btnUp = 2;     // ปุ่มเพิ่มความเร็ว
const int btnDown = 3;   // ปุ่มลดความเร็ว
int motorSpeed = 20;     // ค่าเริ่มต้น (RPM)
void setup() {
  Serial.begin(9600);
  pinMode(btnUp, INPUT_PULLUP);    // ใช้ Pull-up ภายใน
  pinMode(btnDown, INPUT_PULLUP);
  myStepper.setSpeed(motorSpeed);
  Serial.println("กดปุ่มเพื่อปรับความเร็ว Stepper");
}
void loop() {
  // อ่านปุ่มเพิ่มความเร็ว
  if (digitalRead(btnUp) == LOW) {
    motorSpeed += 10;   // เพิ่มทีละ 10 RPM
    if (motorSpeed > 200) motorSpeed = 200;   // จำกัดสูงสุด
    myStepper.setSpeed(motorSpeed);
    Serial.print("Speed = ");
    Serial.print(motorSpeed);
    Serial.println(" RPM");
    delay(300);   // กันเด้งปุ่ม
  }
  // อ่านปุ่มลดความเร็ว
  if (digitalRead(btnDown) == LOW) {
    motorSpeed -= 10;   // ลดทีละ 10 RPM
    if (motorSpeed < 1) motorSpeed = 1;   // จำกัดต่ำสุด
    myStepper.setSpeed(motorSpeed);
    Serial.print("Speed = ");
    Serial.print(motorSpeed);
    Serial.println(" RPM");
    delay(300);   // กันเด้งปุ่ม
  }
  // หมุนตามเข็ม 1 รอบ
  myStepper.step(stepsPerRevolution);
  // หมุนทวนเข็ม 1 รอบ
  myStepper.step(-stepsPerRevolution);
}