Hi I am a beginner, so I may have obvious mistakes.
I am struggling to make a mechanism which can detect the movement and send a voice signal by buzzer when it detects a movement.
My buzzers is keep working even though there is no movement.
Here is my code, thanks in advance:
#include <SoftwareSerial.h>
//ultrasonic pins
int trigger = 9;
int echo = 8;
long duration;
int distance;
long duration2;
int distance2;
int buzzer = 7;
int led = 2;
// motor pins
int lDIR = 13;
int lPWD = 3;
int rDIR = 12;
int rPWD = 11;
void setup() {
pinMode(trigger, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(lDIR, OUTPUT);
pinMode(lPWD, OUTPUT);
pinMode(rDIR, OUTPUT);
pinMode(rPWD, OUTPUT);
pinMode(echo, INPUT);
}
void loop(){
motorStop();
delay(5);
getDistance();
delay(5000);
if (distance > distance2) {
runBuzzer();
}
else if (distance < distance2) {
runBuzzer();
}
else {
runLed();
}
delay(5000);
}
long getDistance() {
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delayMicroseconds(5000);
digitalWrite(trigger, LOW);
duration = pulseIn(echo, HIGH);
distance = duration * 0.034 / 2;
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delayMicroseconds(5000);
digitalWrite(trigger, LOW);
duration2 = pulseIn(echo, HIGH);
distance2 = duration2 * 0.034 / 2;
}
void runBuzzer(){
tone(buzzer, 1000); // Send 1KHz sound signal...
delay(1000); // ...for 1 sec
noTone(buzzer); // Stop sound...
delay(1000); // ...for 1sec
}
void motorStop() {
digitalWrite(lDIR, ILERI);
digitalWrite(rDIR, ILERI);
analogWrite(lPWD, 0);
analogWrite(rPWD, 0);
}
void runLed(){
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}