// Forum: https://forum.arduino.cc/t/stepper-w-2-buttons-pushed-and-potentiometer-got-stuck/1166311
//lcd
#include <LiquidCrystal.h>
LiquidCrystal lcd(23, 22, 24, 25, 26, 27);
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distanceCm, distanceInch, distanceMm;
// motor
const int button_left = 2; // Push button for CW
const int button_right = 3; // Push button for CCW
const int driverPUL = 7; // PUL- pin
const int driverDIR = 6; // DIR- pin
const int spd = A0; // Potentiometer
const int leftLED = 12;
const int rightLED = 13;
int pd = 500; // Pulse Delay period
void setup() {
Serial.begin(115200);
//lcd
lcd.begin(16, 2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
//motor
pinMode (driverPUL, OUTPUT);
pinMode (driverDIR, OUTPUT);
pinMode (button_left, INPUT_PULLUP);
pinMode (button_right, INPUT_PULLUP);
}
void loop() {
pd = 2090 - analogRead(spd) * 2;
//lcd
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * 0.034 / 2;
distanceInch = duration * 0.0133 / 2;
distanceMm = duration * 0.34 / 2;
Serial.println(distanceMm);
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distanceMm);
lcd.print(" mm ");
delay(300);
lcd.setCursor(0, 1);
lcd.print("Distance: ");
lcd.print(distanceInch);
lcd.print("inch");
delay(10);
//motor
if ( digitalRead(button_right) && digitalRead(button_left) )
return;
if ( !digitalRead(button_right) )
digitalWrite(driverDIR, LOW);
if ( !digitalRead(button_left) )
digitalWrite(driverDIR, HIGH);
digitalWrite(rightLED, !digitalRead(button_right));
digitalWrite(leftLED, !digitalRead(button_left));
digitalWrite(driverPUL, LOW);
delayMicroseconds(50);
digitalWrite(driverPUL, HIGH);
delayMicroseconds(pd);
}