Fire Fighting Robot Project
Fire Fighting Robot Project
Wiring:
- VCC -> 5V
- IN1 -> D9
- IN2 -> D8
- IN3 -> D7
- IN4 -> D6
Servo Motor
- Signal -> A4
- VCC -> 5V
| Component | Pin |
|----------------|------|
| IR Right | D2 |
| IR Front | D3 |
| IR Left | D4 |
| Motor IN1 | D9 |
| Motor IN2 | D8 |
| Motor IN3 | D7 |
| Motor IN4 | D6 |
| ENB (Motor B) | D5 |
| Servo | A4 |
| Pump | A5 |
Arduino Code
#define enA 10
#define in1 9
#define in2 8
#define in3 7
#define in4 6
#define enB 5
#define ir_R 2
#define ir_F 3
#define ir_L 4
#define servo A4
#define pump A5
void setup() {
Serial.begin(9600);
pinMode(ir_R, INPUT);
pinMode(ir_F, INPUT);
pinMode(ir_L, INPUT);
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(servo, OUTPUT);
pinMode(pump, OUTPUT);
for (int angle = 90; angle <= 140; angle += 5) servoPulse(servo, angle);
for (int angle = 140; angle >= 40; angle -= 5) servoPulse(servo, angle);
for (int angle = 40; angle <= 90; angle += 5) servoPulse(servo, angle);
analogWrite(enA, Speed);
analogWrite(enB, Speed);
delay(500);
}
void loop() {
s1 = digitalRead(ir_R);
s2 = digitalRead(ir_F);
s3 = digitalRead(ir_L);
Serial.print(s1); Serial.print("\t");
Serial.print(s2); Serial.print("\t");
Serial.println(s3);
delay(50);
if (s1 == LOW) {
Stop();
digitalWrite(pump, HIGH);
for (int angle = 90; angle >= 40; angle -= 3) servoPulse(servo, angle);
for (int angle = 40; angle <= 90; angle += 3) servoPulse(servo, angle);
} else if (s2 == LOW) {
Stop();
digitalWrite(pump, HIGH);
for (int angle = 90; angle <= 140; angle += 3) servoPulse(servo, angle);
for (int angle = 140; angle >= 40; angle -= 3) servoPulse(servo, angle);
for (int angle = 40; angle <= 90; angle += 3) servoPulse(servo, angle);
} else if (s3 == LOW) {
Stop();
digitalWrite(pump, HIGH);
for (int angle = 90; angle <= 140; angle += 3) servoPulse(servo, angle);
for (int angle = 140; angle >= 90; angle -= 3) servoPulse(servo, angle);
} else {
digitalWrite(pump, LOW);
if (s1 == HIGH && s2 == HIGH && s3 == HIGH) {
forword();
} else if (s1 == HIGH) {
backword(); delay(100);
turnRight(); delay(200);
} else if (s3 == HIGH) {
backword(); delay(100);
turnLeft(); delay(200);
} else {
Stop();
}
}
delay(10);
}
void forword() {
digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
}
void backword() {
digitalWrite(in1, LOW); digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
}
void turnRight() {
digitalWrite(in1, LOW); digitalWrite(in2, HIGH);
digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
}
void turnLeft() {
digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
}
void Stop() {
digitalWrite(in1, LOW); digitalWrite(in2, LOW);
digitalWrite(in3, LOW); digitalWrite(in4, LOW);
}