#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int mundur = 6; //Kuning(counterClockwise / Berlawanan Jarum Jam)
const int maju = 5; //Merah(Clockwise/Searah Jarum Jam)
int direction = 2; //Pin Direction
int step = 3; //Pin Step
int count = 0; // Menyimpan jumlah langkah
int time = 20000; //Kecepatan Putar
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C, ukuran LCD (16 karakter, 2 baris)
void setup()
{
Serial.begin(9600);
Serial.println("Motor Stepper Mulai");
pinMode(mundur, INPUT_PULLUP);
pinMode(maju, INPUT_PULLUP);
pinMode(direction, OUTPUT);
pinMode(step, OUTPUT);
digitalWrite(direction, LOW);
digitalWrite(step, LOW);
lcd.begin(); // Inisialisasi LCD
lcd.backlight(); // Menghidupkan lampu latar LCD
lcd.setCursor(0, 0); // Menyetel posisi cursor di baris pertama
lcd.print("Motor Stepper");
lcd.setCursor(0, 1); // Pindah ke baris kedua
lcd.print("Ready...");
delay(2000);
}
void loop()
{
int berlawananjarum = digitalRead(mundur);
int searahjarum = digitalRead(maju);
if(berlawananjarum == LOW)
{
delay(250);
if(berlawananjarum == LOW)
{
digitalWrite(direction, LOW); // Arah berlawanan jarum jam
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Mundur...");
do
{
digitalWrite(step, HIGH);
delayMicroseconds(time);
digitalWrite(step, LOW);
delayMicroseconds(time);
count++; // Menambahkan langkah
lcd.setCursor(0, 1);
lcd.print("Langkah: ");
lcd.print(count);
berlawananjarum = digitalRead(mundur);
}
while(berlawananjarum != HIGH);
}
}
if(searahjarum == LOW)
{
delay(250);
if(searahjarum == LOW)
{
digitalWrite(direction, HIGH); // Arah searah jarum jam
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Maju...");
do
{
digitalWrite(step, HIGH);
delayMicroseconds(time);
digitalWrite(step, LOW);
delayMicroseconds(time);
count++; // Menambahkan langkah
lcd.setCursor(0, 1);
lcd.print("Langkah: ");
lcd.print(count);
searahjarum = digitalRead(maju);
}
while(searahjarum != HIGH);
}
}
}