#define inputdir 2
#define pindir 3
#define tambah 5
#define kurang 4
#define langkah 6
#define motorInterfaceType 1
#include <LiquidCrystal_I2C.h>
#include <AccelStepper.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
AccelStepper stepper = AccelStepper(motorInterfaceType, langkah, pindir);
int arah = 0;
int nilai = 0;
void setup() {
// put your setup code here, to run once:
pinMode(inputdir, INPUT);
pinMode(pindir, OUTPUT);
pinMode(tambah, INPUT);
pinMode(kurang, INPUT);
pinMode(langkah, OUTPUT);
lcd.init();
lcd.backlight();
stepper.setMaxSpeed(200);
stepper.setAcceleration(30);
//lcd.setCursor(0,0);
//lcd.print("Motor Stepper");
//delay(500);
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("arah : ");
lcd.setCursor(7,0);
lcd.print("CCW");
}
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(0,0);
lcd.print("arah : ");
int dir = digitalRead(inputdir);
if(dir == 1){
arah++;
if(arah>1){
arah = 0;
lcd.setCursor(7,0);
lcd.print("CCW");
}
else{
lcd.setCursor(7,0);
lcd.print(" CW");
}
delay(100);
}
digitalWrite(pindir, arah);
int penambahan = digitalRead(tambah);
if(penambahan == 1){
nilai++;
}
int pengurangan = digitalRead(kurang);
if(pengurangan == 1){
nilai--;
}
lcd.setCursor(0,1);
lcd.print("jarak:");
lcd.setCursor(7,1);
lcd.print(nilai);
//for (int x = 0; x < nilai; ++)
//{
//digitalWrite(langkah, HIGH);
//delayMicroseconds(2000);
//digitalWrite(langkah, LOW);
//delayMicroseconds(2000);
//}
if (arah==0){
stepper.moveTo(-nilai);
stepper.runToPosition();
}
else{
stepper.moveTo(nilai);
stepper.runToPosition();
}
}