// pin yang digunakan untuk mengontrol stepper
const int dirPin = 5; // pin untuk kontrol arah
const int stePin = 6; // pin untuk kontrol langkah
const int startButtonPin = 3; // pin untuk tombol start
const int stopButtonPin = 4; // pin untuk tombol stop
// pin tambahan
const int ldrPin = A0; // pin analog untuk sensor LDR
const int ledTerangPin = 7; // LED 1: untuk cahaya terang
const int ledGelapPin = 8; // LED 2: untuk cahaya gelap
int startButtonState = 0;
int stopButtonState = 0;
int lastStartButtonState = 0;
int lastStopButtonState = 0;
bool motorRunning = false;
void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stePin, OUTPUT);
pinMode(startButtonPin, INPUT_PULLUP);
pinMode(stopButtonPin, INPUT_PULLUP);
pinMode(ledTerangPin, OUTPUT);
pinMode(ledGelapPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Baca tombol
startButtonState = digitalRead(startButtonPin);
stopButtonState = digitalRead(stopButtonPin);
// Start
if (startButtonState == LOW && lastStartButtonState == HIGH) {
delay(50);
motorRunning = true;
Serial.println("Motor Started");
}
// Stop
if (stopButtonState == LOW && lastStopButtonState == HIGH) {
delay(50);
motorRunning = false;
Serial.println("Motor Stopped");
}
// Simpan status tombol sebelumnya
lastStartButtonState = startButtonState;
lastStopButtonState = stopButtonState;
// Baca LDR
int ldrValue = analogRead(ldrPin);
Serial.print("LDR Value: ");
Serial.println(ldrValue);
// Cek intensitas cahaya
if (ldrValue > 600) { // terang
digitalWrite(ledTerangPin, HIGH);
digitalWrite(ledGelapPin, LOW);
} else { // gelap
digitalWrite(ledTerangPin, LOW);
digitalWrite(ledGelapPin, HIGH);
}
// Jalankan motor
if (motorRunning) {
digitalWrite(dirPin, HIGH);
stepMotor();
} else {
digitalWrite(stePin, LOW);
}
}
void stepMotor() {
digitalWrite(stePin, HIGH);
delayMicroseconds(1000);
digitalWrite(stePin, LOW);
delayMicroseconds(1000);
}