#define BLYNK_TEMPLATE_ID "TMPL3hVLYsR30"
#define BLYNK_TEMPLATE_NAME "Abdul Kaiz"
#define BLYNK_AUTH_TOKEN "vKAlp0SCWZY9BhzRPYKrgXONNbCzDOc5"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Define pin connections
const int pin_trig1 = 22;
const int pin_echo1 = 23;
const int pin_echo2 = 27;
const int pin_trig2 = 26;
int distance1; // Front distance
int distance2; // Back distance
int stepPerRevolution = 200;
const int dirPin[] = {5, 12, 18, 33};
const int stepPin[] = {4, 13, 19, 32};
char auth[] = "vKAlp0SCWZY9BhzRPYKrgXONNbCzDOc5";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
Serial.begin(115200);
// Ultrasonic sensor pin modes
pinMode(pin_trig1, OUTPUT);
pinMode(pin_echo1, INPUT);
pinMode(pin_echo2, INPUT);
pinMode(pin_trig2, OUTPUT);
// Stepper motor pin modes
for (int i = 0; i < 4; i++) {
pinMode(stepPin[i], OUTPUT);
pinMode(dirPin[i], OUTPUT);
}
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
// Front ultrasonic sensor
digitalWrite(pin_trig1, LOW);
delayMicroseconds(2);
digitalWrite(pin_trig1, HIGH);
delayMicroseconds(10);
digitalWrite(pin_trig1, LOW);
distance1 = pulseIn(pin_echo1, HIGH) * 0.034 / 2;
// Back ultrasonic sensor
digitalWrite(pin_trig2, LOW);
delayMicroseconds(2);
digitalWrite(pin_trig2, HIGH);
delayMicroseconds(10);
digitalWrite(pin_trig2, LOW);
distance2 = pulseIn(pin_echo2, HIGH) * 0.034 / 2;
Serial.print("FRONT-DISTANCE = ");
Serial.print(distance1);
Serial.print(" BACK-DISTANCE = ");
Serial.println(distance2);
delay(100);
// Send distance values to Blynk
Blynk.virtualWrite(V0, distance1);
delay(1000);
Blynk.virtualWrite(V1, distance2);
delay(1000);
// Stepper motor control based on distance
if (distance1 > 20) { // Move forward if distance is greater than 20cm
for (int i = 0; i < 4; i++) {
digitalWrite(dirPin[i], HIGH); // Set direction pins to HIGH for forward movement
}
for (int i = 0; i < stepPerRevolution; i++) {
for (int j = 0; j < 4; j++) {
digitalWrite(stepPin[j], HIGH);
delay(1);
digitalWrite(stepPin[j], LOW);
delay(1);
}
}
} else { // Move backward if distance is less than or equal to 20cm
for (int i = 0; i < 4; i++) {
digitalWrite(dirPin[i], LOW); // Set direction pins to LOW for backward movement
}
for (int i = 0; i < stepPerRevolution; i++) {
for (int j = 0; j < 4; j++) {
digitalWrite(stepPin[j], HIGH);
delay(1);
digitalWrite(stepPin[j], LOW);
delay(1);
}
}
}
}