#include <LiquidCrystal_I2C.h>
char data;
#define FlameSensor 12
#define Buzzer 13
#define LM1 2
#define LM2 3
#define RM1 4
#define RM2 5
int flame=1;
#define Speakerpin 10
#define FL 6
#define RL 7
#define BL 8
#define LL 9
int i;
int z;
#define FAN 11
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
Serial.begin(9600);
for (i = 1; i < 14; i++)
pinMode(i, OUTPUT);
delay(100);
pinMode(FlameSensor, INPUT);
lcd.setCursor(1, 0);
lcd.init();
lcd.backlight ();
lcd.print("Ahmad Zoabi");
lcd.setCursor(0, 0);
lcd.print("Omar Zoabi");
delay(1000);
lcd.clear();
digitalWrite(FAN,0);
}
void loop()
{
flame = digitalRead(FlameSensor);
Serial.print(flame);
if (flame == 0)
{
digitalWrite(FL, 0);
digitalWrite(BL, 0);
digitalWrite(LL, 0);
digitalWrite(RL, 0);
lcd.clear();
RobotStop();
Serial.println(" - Fire detected...!");
lcd.print(" - Fire detected...!");
digitalWrite(Buzzer, 1);
digitalWrite(FAN, 1);
for (i = 500; i < 1000; i += 10)
{
tone(Speakerpin, i);
delay(40);
}
digitalWrite(FL, 1);
digitalWrite(BL, 1);
digitalWrite(LL, 1);
digitalWrite(RL, 1);
for (i = 1000; i > 500; i -= 10)
{
tone(Speakerpin, i);
delay(60);
}
}
else
{
if (Serial.available())
{
data = Serial.read();
if (data == 'F')
RobotForWard();
if (data == 'B')
RobotBackWard();
if (data == 'L')
RobotLeft();
if (data == 'R')
RobotRight();
if (data == 'S')
RobotStop();
}
Serial.println("-No Fire detected");
lcd.print("-No Fire detected...!");
digitalWrite(FL, 0);
digitalWrite(BL, 0);
digitalWrite(LL, 0);
digitalWrite(RL, 0);
digitalWrite(Buzzer, 0);
digitalWrite(FAN, 0);
delay(1000);
noTone(Speakerpin);
lcd.clear();
}
}
void RobotForWard()
{
lcd.clear();
digitalWrite(LM1, 0);
digitalWrite(LM2, 1);
digitalWrite(RM1, 0);
digitalWrite(RM2, 1);
digitalWrite(FL, 1);
digitalWrite(BL, 0);
digitalWrite(LL, 0);
digitalWrite(RL, 0);
lcd.setCursor(4, 0);
lcd.print("Forward");
}
void RobotBackWard()
{
lcd.clear();
digitalWrite(LM1, 1);
digitalWrite(LM2, 0);
digitalWrite(RM1, 1);
digitalWrite(RM2, 0);
digitalWrite(FL, 0);
digitalWrite(BL, 1);
digitalWrite(LL, 0);
digitalWrite(RL, 0);
lcd.setCursor(5, 0);
lcd.print("Back");
for (z = 0; z < 4; z++)
{
digitalWrite(Buzzer, 1);
delay(400);
digitalWrite(Buzzer, 0);
delay(400);
}
}
void RobotLeft()
{
lcd.clear();
digitalWrite(LM1, 0);
digitalWrite(LM2, 1);
digitalWrite(RM1, 1);
digitalWrite(RM2, 0);
digitalWrite(FL, 0);
digitalWrite(BL, 0);
digitalWrite(LL, 1);
digitalWrite(RL, 0);
lcd.setCursor(5, 0);
lcd.print("Left");
}
void RobotRight()
{
lcd.clear();
digitalWrite(LM1, 1);
digitalWrite(LM2, 0);
digitalWrite(RM1, 0);
digitalWrite(RM2, 1);
digitalWrite(FL, 0);
digitalWrite(BL, 0);
digitalWrite(LL, 0);
digitalWrite(RL, 1);
lcd.setCursor(5, 0);
lcd.print("Right");
}
void RobotStop()
{
for (i = 2; i < 6 ; i++)
digitalWrite(i, 0);
digitalWrite(FL, 0);
digitalWrite(BL, 0);
digitalWrite(LL, 0);
digitalWrite(RL, 0);
lcd.clear();
digitalWrite(Buzzer, 0);
}