//lcd
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distanceCm, distanceInch, distanceMm;
// motor
const int button_left = 52; // Push button for CW
const int button_right = 53; // Push button for CCW
const int driverPUL = 30; // PUL- pin
const int driverDIR = 32; // DIR- pin
const int spd = A0; // Potentiometer
const int leftLED = 12;
const int rightLED = 11;
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);
}