#include <ESP32Servo.h>
#include <Stepper.h>
#define SL 12
#define SR 13
#define PTN 2
#define BTN 15
#define STEP 16
#define DIR 4
#define ECO 14
#define TRG 27
Servo servoL;
Servo servoR;
int speed = 100;
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, DIR, STEP);
void setup() {
// put your setup code here, to run once:
pinMode(SR, OUTPUT);
pinMode(SL, OUTPUT);
pinMode(STEP, OUTPUT);
pinMode(TRG, OUTPUT);
pinMode(ECO, INPUT);
pinMode(DIR, OUTPUT);
pinMode(PTN, INPUT);
pinMode(BTN, INPUT_PULLUP);
servoR.attach(SR);
servoL.attach(SL);
myStepper.setSpeed(speed);
Serial.begin(115200);
Serial.print(speed);
Serial.println(" km/hr.");
}
void loop() {
int potenValue = analogRead(PTN);
int degree = map(potenValue, 0, 4095, 0 , 180);
servoL.write(degree);
servoR.write(degree);
digitalWrite(TRG, HIGH);
delayMicroseconds(10);
digitalWrite(TRG, LOW);
int duration = pulseIn(ECO, HIGH);
int distance = duration / 58;
if (distance < 30 && speed > 0) {
for (speed; speed > 0; speed--) {
myStepper.setSpeed(speed);
myStepper.step(2);
Serial.print(speed);
Serial.println(" km/hr.");
}
Serial.print(speed);
Serial.println(" km/hr.");
} else if(distance >= 30) {
if(speed < 100) {
for (speed = 1; speed <= 100; speed++) {
myStepper.setSpeed(speed);
myStepper.step(2);
Serial.print(speed);
Serial.println(" km/hr.");
}
}
}
if (speed > 0) {
myStepper.step(10);
}
int buttonValue = digitalRead(BTN);
if (buttonValue == 0) {
Serial.print(0);
Serial.println(" km/hr.");
while (digitalRead(BTN)== 0) {}
for (int s = 1; s <= speed; s++) {
myStepper.setSpeed(s);
myStepper.step(1);
Serial.print(s);
Serial.println(" km/hr.");
}
}
}