so what i wanna do is use us sensor hc-sr04 to detect waste nearby and then go near it. but the code is not working and i dont know why. please help quick
here's my code
#include <Servo.h>
Servo armek;
Servo armdo;
long duration2, distance2, BackSensor, FrontSensor;
char data = 0;
int dist1 = 0;
int dist2 = 0;
int sensor = 2;
int state1 = LOW;
int val = 0;
int detect ;
int motor1Pin1 = 22;
int motor1Pin2 = 23;
int motor2Pin1 = 24;
int motor2Pin2 = 25;
int motor3Pin1 = 28;
int motor3Pin2 = 29;
int motor4Pin1 = 30;
int motor4Pin2 = 31;
int state2;
int trigPin1 = 5;
int echoPin1 = 6;
int trigPin2 = 7;
int echoPin2 = 8;
int var1;
int myvar;
void Forward() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, HIGH);
}
void Reverse() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
}
void Left() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
}
void Right() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
}
void Pick() {
armek.write(150);
armdo.write(150);
}
void Free () {
armek.write(0);
armdo.write(0);
}
void Up() {
digitalWrite(motor3Pin1, HIGH);
digitalWrite(motor3Pin2, LOW);
digitalWrite(motor4Pin1, HIGH);
digitalWrite(motor4Pin2, LOW);
}
void Down() {
digitalWrite(motor3Pin1, LOW);
digitalWrite(motor3Pin2, HIGH);
digitalWrite(motor4Pin1, LOW);
digitalWrite(motor4Pin2, HIGH);
}
void StopWheel() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
}
void StopArm() {
digitalWrite(motor3Pin1, LOW);
digitalWrite(motor3Pin2, LOW);
digitalWrite(motor4Pin1, LOW);
digitalWrite(motor4Pin2, LOW);
}
void setup()
{
pinMode(sensor, INPUT);
pinMode(motor1Pin1, OUTPUT), pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT), pinMode(motor2Pin2, OUTPUT);
pinMode(motor3Pin1, OUTPUT), pinMode(motor3Pin2, OUTPUT);
pinMode(motor4Pin1, OUTPUT), pinMode(motor4Pin2, OUTPUT);
Serial.begin(9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
}
void SonarSensor(int trigPin, int echoPin)
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration2 = pulseIn(echoPin, HIGH);
distance2 = (duration2 / 2) / 29.1;
}
void loop() {
var1 == true;
if (var1 == true)
{
SonarSensor(trigPin1, echoPin1);
FrontSensor = dist1;
SonarSensor(trigPin2, echoPin2);
BackSensor = dist2;
Serial.println(FrontSensor);
Serial.print(" - ");
Serial.println(BackSensor);
Serial.print(" - ");
if (dist2 > 5) {
Left();
Left();
}
while (dist1 > 2) {
Forward();
}
if (dist1 == 2) {
StopWheel();
Down();
Pick();
Up();
Free();
Left();
Forward();
}
val = digitalRead(sensor);
if (val == HIGH)
{
Right();
Forward();
Left();
Forward();
Left();
Forward();
Right();
Forward();
}
}
if (state1 == LOW) {
myvar == true;
}
if (myvar == true) {
Serial.println("Motion detected!");
state1 = HIGH;
}
else {
while (dist1 > 2) {
Forward();
}
}
if (state1 == HIGH) {
Serial.println("Motion stopped!");
state1 = LOW; // update variable state1 to LOW
}
}[\code]