Hi all! I'm trying to build an Arduino autonomous firefighting robot. I've complied the code this far. and when i upload the code to the board the robot is not moving. All the hardware components are tested and working separately. Can somebody help me with the code? Cheers!
#include<Servo.h>
#include <Ultrasonic.h>
#define pump 12
#define flame_R 50
#define flame_L 24
#define flame_M 36
Servo Pump_servo;
int diatance_L=0;
int diatance_R=0;
int diatance_M=0;
int motorA1 = 2;
int motorA2 = 3;
int motorB1 = 4;
int motorB2 = 6;
bool f_L=HIGH;
bool f_R=HIGH;
bool f_M=HIGH;
Ultrasonic ultrasonic_R(22,23);
Ultrasonic ultrasonic_L(52, 53);
void setup() {
Pump_servo.attach(11);
Serial.begin(9600);
pinMode(pump,OUTPUT);
pinMode(flame_R,INPUT);
pinMode(flame_L,INPUT);
pinMode(flame_M,INPUT);
analogWrite(8,100);
analogWrite(9,100);
}
void loop() {
Serial.print(diatance_L);
//Serial.print(" ");
//Serial.println(diatance_R);
diatance_L=ultrasonic_L.read();
diatance_R=ultrasonic_R.read();
if(diatance_L>30/&&diatance_R>30/){
brake();
left();
flame_Check();
delay(1000);
brake();
forward();
flame_Check();
delay(1500);
brake();
delay(100);}
elseright();
//Serial.println(diatance_L);
//Serial.print(" ");
//Serial.println(diatance_R);
flame_Check();
}
if(diatance_L<30/&&diatance_R<30/){
brake();
right();
flame_Check();
delay(1000);
brake();
forward();
flame_Check();
delay(1000);
brake();
delay(100);
flame_Check();}
else
left();
}
flame_Check();
delay(500);
}
void forward()
{
//Serial.println("Forward");
digitalWrite(motorA1,LOW);
digitalWrite(motorA2,HIGH);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,HIGH);
}
void brake()
{ digitalWrite(motorA1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,LOW);
}
void backwards(){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,LOW);
digitalWrite(motorB1,HIGH);
digitalWrite(motorB2,LOW);
}
void right()
{ digitalWrite(motorA1,LOW);
digitalWrite(motorA2,HIGH);
digitalWrite(motorB1,HIGH);//right wheel
digitalWrite(motorB2,LOW);
}
void left()
{ digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,LOW);//left wheel
digitalWrite(motorB1,LOW);
digitalWrite(motorB2,HIGH);
}
void pumpstart()
{
digitalWrite(pump,HIGH);
}
void pumpstop()
{
digitalWrite(pump,LOW);
}
void flame_Check()
{ f_L=digitalRead(flame_L);
f_R=digitalRead(flame_R);
f_M=digitalRead(flame_M);
if(f_R==LOW||f_L==LOW||f_M==LOW)
{
brake();
if(f_R==LOW){
Pump_servo.write(0);
delay(15);
}
else if(f_L==LOW){
Pump_servo.write(180);
delay(15);
}
else if(f_M==LOW){
Pump_servo.write(90);
delay(15);
}
while(f_R==LOW||f_L==LOW||f_M==LOW){
pumpstart();
delay(1000);
f_L=digitalRead(flame_L);
f_R=digitalRead(flame_R);
f_M=digitalRead(flame_M);
}
pumpstop();
}
}