// Setting Motor A
int enable1Pin = 14;
int motor1Pin1 = 27;
int motor1Pin2 = 26;
//Settin Motor B
int enable2Pin = 32;
int motor2Pin3 = 25;
int motor2Pin4 = 33;
// define pins for flame sensor
#define FlamePinForawrd 17
#define FlamePinForawrdAnlog 16
#define FlamePinRight 15
//#define FlamePinLeft
// pin 13 that connects to the relay to control the pump
#define RELAY_PIN 12
//pins for siren led and buzzer
//right siren
#define RightLedBlue 2
#define RightLedRed 21
#define RightBuzzer 19
//left siren
#define LeftLedBlue 22
#define LeftLedRed 18
#define LeftBuzzer 23
void setup() {
//modding motor A
pinMode(enable1Pin, OUTPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
//modding Motor B
pinMode(enable2Pin, OUTPUT);
pinMode(motor2Pin3, OUTPUT);
pinMode(motor2Pin4, OUTPUT);
//setting flame sensor
pinMode(FlamePinForawrd, INPUT);
pinMode(FlamePinForawrdAnlog, INPUT);
pinMode(FlamePinRight, INPUT);
//pinMode(FlamePinLeft, INPUT);
//setting siren for left
pinMode(LeftLedBlue, OUTPUT); //defined port for left leds
pinMode(LeftLedRed, OUTPUT);
pinMode(LeftBuzzer, OUTPUT); // left buzzer
//setting siren for right
pinMode(RightLedBlue, OUTPUT); //defined port for right leds
pinMode(RightLedRed, OUTPUT);
pinMode(RightBuzzer, OUTPUT); // port front buzzer
// initaite serial monitor
Serial.begin(9600);
}
void loop() {
int FlameCheckForawrd = digitalRead(FlamePinForawrd);
int FlameCheckForawrdAnalog = analogRead(FlamePinForawrdAnlog);
int FlameCheckRight = digitalRead(FlamePinRight);
//int FlameCheckLeft = digitalRead(FlamePinLeft);
///sensorTest();
if (FlameCheckForawrd == LOW)
{
Serial.println("flame dected a head");
FlameCheckForawrdAnalog = analogRead(FlamePinForawrdAnlog);
Serial.println(FlameCheckForawrdAnalog);
delay(200);
if (FlameCheckForawrdAnalog < 1000) {
CAR_moveForwardWifi();
// front fire indicated by both siren on
Serial.println("left and right sirens on");
sirenOn(RightLedBlue, RightLedRed, RightBuzzer);
delay(200);
sirenOn(LeftLedBlue, LeftLedRed, LeftBuzzer);
delay(200);
digitalWrite(RELAY_PIN, HIGH);
}
else
{
StopCar();
Serial.println("car stopping");
//stop both siren when in safe distance from fire
Serial.println("left and right sirens off");
sirenoff(RightLedBlue, RightLedRed, RightBuzzer);
sirenoff(LeftLedBlue, LeftLedRed, LeftBuzzer);
}
}
else if (FlameCheckRight == LOW)
{
Serial.println("flame dected on the right");
if (FlameCheckForawrd != LOW)
{
FlameCheckForawrd = digitalRead(FlamePinForawrd);
Serial.println("turning right");
Serial.println("right siren on");
sirenOn(RightLedBlue, RightLedRed, RightBuzzer);
CAR_turnRightWifi();
delay(200);
}
else {
StopCar();
Serial.println("car stopping");
//stop siren when flame in front the front falme sensor
Serial.println("right siren off");
sirenoff(RightLedBlue, RightLedRed, RightBuzzer);
}
}
//else if (FlameCheckLeft == LOW)
//{
//Serial.println("flame dected on the left");
//while(FlameCheckForawrd != LOW)
//{
//FlameCheckForawrd = digitalRead(FlamePinForawrd);
//Serial.println("turning left");
//CAR_turnLeftWifi();
//delay(200);
//}
//}
else
{
StopCar();
}
//delay(300);//change this va
}
// stop car
void StopCar() {
Serial.println("StopCar");
analogWrite(enable1Pin, 0);
analogWrite(enable2Pin, 0);
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin3, LOW);
digitalWrite(motor2Pin4, LOW);
delay(700);
}
void CAR_moveForwardWifi() {
//Set speed motor A and B
analogWrite(enable1Pin, 186);
analogWrite(enable2Pin, 200);
//move forawrd
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin3, HIGH);
digitalWrite(motor2Pin4, LOW);
}
void CAR_moveBackwardWifi() {
//setting speed motor A and B
analogWrite(enable1Pin, 190);
analogWrite(enable2Pin, 200);
//back movement
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin3, LOW);
digitalWrite(motor2Pin4, HIGH);
}
void CAR_turnLeftWifi() {
//Set speed motor A and B
analogWrite(enable1Pin, 255);
analogWrite(enable2Pin, 0);
//turn left
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin3, LOW);
digitalWrite(motor2Pin4, LOW);
}
void CAR_turnRightWifi() {
//Set speed motor A and B
analogWrite(enable1Pin, 255);
analogWrite(enable2Pin, 255);
//turn right
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin3, HIGH);
digitalWrite(motor2Pin4, LOW);
}
void sensorTest() {
while (1) {
for (int i = 0; i < 3; i++) {
Serial.print(digitalRead(i + 15)); // read "flame" sensors
}
Serial.println(); // print the sensor state
delay(250);
}
}
//functions for siren
void sirenOn(int Led1Pin, int Led2Pin, int BuzzerPin)
{
int i;
for (int i = 700; i < 800; i++) // duration of the first sound 350 2 millisecond cycles.
{
tone(BuzzerPin, i);
delay(15);
digitalWrite(Led1Pin, HIGH); // turn on the leds
digitalWrite(Led2Pin, LOW);
delay(30);
digitalWrite(Led1Pin, LOW); // blinking leds
digitalWrite(Led2Pin, HIGH);
delay(30);
delay(15); // wait 1 millisecond and restart from the for statement (100 repetitions)
}
for (i = 800; i > 700; i--) {
tone(BuzzerPin, i);
delay(15);
digitalWrite(Led1Pin, HIGH); // turn on the leds
digitalWrite(Led2Pin, LOW);
delay(30);
digitalWrite(Led1Pin, LOW); // blinking leds
digitalWrite(Led2Pin, HIGH);
delay(30);
delay(15); // wait 1 millisecond and restart from the for statement (100 repetitions)
}
}
void sirenoff(int Led1Pin, int Led2Pin, int BuzzerPin)
{
digitalWrite(Led1Pin, LOW); // turn off blinking leds
digitalWrite(Led2Pin, LOW);
tone(BuzzerPin, 0); // turn off buzzer
}
REV
FWD
REV
FWD
EN2
EN1
MOTORS:
HIGH POWER
DEVICES:
LOW POWER
COMMON
GROUND
RELAY
PIN