0% found this document useful (0 votes)
12 views5 pages

Fire Fighting Robot Project

The document provides a detailed guide for wiring and programming an automatic fire-fighting robot using Arduino. It includes specific pin assignments for various components such as IR flame sensors, motor drivers, servo motors, and a water pump. Additionally, the Arduino code is presented, outlining the setup and loop functions to control the robot's movement and fire-fighting actions based on sensor inputs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views5 pages

Fire Fighting Robot Project

The document provides a detailed guide for wiring and programming an automatic fire-fighting robot using Arduino. It includes specific pin assignments for various components such as IR flame sensors, motor drivers, servo motors, and a water pump. Additionally, the Arduino code is presented, outlining the setup and loop functions to control the robot's movement and fire-fighting actions based on sensor inputs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Automatic Fire-Fighting Robot Project

Circuit Wiring Guide:


IR Flame Sensors (3-pin)

- Right sensor -> D2

- Front sensor -> D3

- Left sensor -> D4

Wiring:

- VCC -> 5V

- GND -> GND

- OUT -> D2/D3/D4 respectively

L298N Motor Driver

- IN1 -> D9

- IN2 -> D8

- IN3 -> D7

- IN4 -> D6

- ENA -> D10 (PWM)

- ENB -> D5 (PWM)

- VCC -> 12V or motor supply

- GND -> GND

- 5V (optional if jumper is on)

Servo Motor

- Signal -> A4

- VCC -> 5V

- GND -> GND


Water Pump

- Signal -> A5 (use a transistor if needed)

Arduino Pin Assignments:

| Component | Pin |

|----------------|------|

| IR Right | D2 |

| IR Front | D3 |

| IR Left | D4 |

| Motor IN1 | D9 |

| Motor IN2 | D8 |

| Motor IN3 | D7 |

| Motor IN4 | D6 |

| ENA (Motor A) | D10 |

| 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

int Speed = 160;


int s1, s2, s3;

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 servoPulse(int pin, int angle) {


int pwm = (angle * 11) + 500;
digitalWrite(pin, HIGH);
delayMicroseconds(pwm);
digitalWrite(pin, LOW);
delay(50);
}

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);
}

You might also like