#include <NewPing.h>
// Inisialisasi pin untuk sensor ultrasonik
const int trigPin = 9;
const int echoPin = 10;
// Inisialisasi pin untuk motor stepper
const int stepPin = 2;
const int dirPin = 3;
// Inisialisasi objek sensor ultrasonik
NewPing sonar(trigPin, echoPin);
// Inisialisasi variabel untuk motor stepper
int stepsPerRevolution = 200;
int stepNumber = 0;
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(9600);
// Set pin mode untuk sensor ultrasonik
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Set pin mode untuk motor stepper
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void moveStepper(int steps, int direction) {
digitalWrite(dirPin, direction); // 1 untuk searah jarum jam, 0 untuk berlawanan arah jarum jam
for (int i = 0; i < steps; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(500); // Sesuaikan dengan kecepatan motor
digitalWrite(stepPin, LOW);
delayMicroseconds(500); // Sesuaikan dengan kecepatan motor
}
}
void loop() {
// Mengukur jarak dengan sensor ultrasonik
int distance = sonar.ping_cm();
// Menampilkan jarak pada Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
// Menggerakkan motor stepper berdasarkan jarak
if (distance < 10) {
// Jika jarak kurang dari 10cm, motor bergerak lawan arah jarum jam 90 derajat
moveStepper(stepsPerRevolution / 4, 0); // 0 untuk berlawanan arah jarum jam
} else {
// Jika jarak di atas 10cm, motor bergerak 180 derajat searah jarum jam
moveStepper(stepsPerRevolution / 2, 1); // 1 untuk searah jarum jam
}
// Delay untuk stabilitas dan menyesuaikan kecepatan
delay(1000);
}