#include <Arduino.h>
// กำหนดพินที่เชื่อมต่อกับขา IN1 - IN4 ของมอเตอร์
const int IN1 = 5;
const int IN2 = 6;
const int IN3 = 7;
const int IN4 = 8;
// กำหนดขา LED
const int LED_PIN = 2;
// ลำดับการกระตุ้นขดลวด (Full-step sequence)
int steps[4][4] = {
{1, 0, 0, 1},
{1, 0, 1, 0},
{0, 1, 1, 0},
{0, 1, 0, 1}
};
// จำนวนสเต็ปต่อรอบของมอเตอร์ (ปรับตามสเปคมอเตอร์ของคุณ)
const int STEPS_PER_REV = 200; // 200 สเต็ป = 360 องศา
void setup() {
// กำหนดพิน LED และมอเตอร์เป็น OUTPUT
pinMode(LED_PIN, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
// ทำให้ LED กระพริบตลอดเวลา
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
// หมุนมอเตอร์ทวนเข็มนาฬิกา 180 องศา
rotateStepper(180); // หมุนทวนเข็มนาฬิกา
delay(2000); // รอ 2 วินาทีก่อนเริ่มใหม่
}
// ฟังก์ชันสำหรับหมุนมอเตอร์เป็นองศา (บวกหรือลบ)
void rotateStepper(int degrees) {
// คำนวณจำนวนสเต็ปที่ต้องหมุน (100 สเต็ปสำหรับ 180 องศา)
int stepsToMove = (degrees * STEPS_PER_REV) / 360;
// หมุนตามลำดับสเต็ป
for (int step = 0; step < abs(stepsToMove); step++) {
int direction = (stepsToMove > 0) ? step % 4 : (3 - step % 4);
setStepperPins(direction);
delay(10); // ปรับความเร็วได้ตามต้องการ
}
}
// ฟังก์ชันสำหรับเซ็ตพินมอเตอร์ตามลำดับ
void setStepperPins(int step) {
digitalWrite(IN1, steps[step][0]);
digitalWrite(IN2, steps[step][1]);
digitalWrite(IN3, steps[step][2]);
digitalWrite(IN4, steps[step][3]);
}
////// Motor