Hello, I am new to this field and don't know it very well yet. I wanted to ask if the code I have written works or if there are even better solutions or alternatives.
My goal is that when the ultrasonic sensor detects an object less than 40 cm away, the dc motor should turn on for 5 seconds. Thank you very much in advance . I am using a HC-SR04 Ultrasonic sensor, Arduino Uno, 9V battery, L298n motor driver and a Hobby dc motor.
Code:
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
const int buzzer = 13;
int in1 = 2;
int in2 = 4;
int enA = 3;
// Project by - Be innovative with Prasad
// title - ultrasonic sensor project with buzzer and Arduino
// defines variables
long duration;
int distance;
int safetyDistance;
void setup()
{
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(buzzer, OUTPUT);
pinMode (enA, OUTPUT);
pinMode (in1, OUTPUT);
pinMode (in2, OUTPUT);
Serial.begin(9600); // Starts the serial communication
}
void loop()
{
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
safetyDistance = distance;
if (safetyDistance <= 40) // You can change safe distance from here changing value Ex. 20 , 40 , 60 , 80 , 100, all in cm
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 100);
delay(5000);
}
else{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(enA, 0);
}
}