#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels
// create an OLED display object connected to I2C
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//Pins Where Input and Output is Connected
int Butane = 12;
int LPG = 13;
int Kerosene = 14;
int WaterPump = 2;
int ExhaustFan = 4;
void setup() {
Serial.begin(9600); // Begins Serial Monitor
//Declares INPUT Pins
pinMode(LPG,INPUT);
pinMode(Butane,INPUT);
pinMode(Kerosene,INPUT);
//Declares OUTPUT Pins
pinMode(WaterPump,OUTPUT);
pinMode(ExhaustFan,OUTPUT);
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
delay(2000); // wait two seconds for initializing
oled.setTextSize(1); // set text size
oled.setTextColor(WHITE); // set text color
}
void loop() {
oled.display(); //starts oled display
delay(1000); //Time delay
oled.clearDisplay(); //Clears oled display
//Reads Sensor/Input Values
int LPGSensor = analogRead(LPG);
int ButaneSensor = analogRead(Butane);
int KeroseneSensor = analogRead(Kerosene);
//Used For Debuging
//oled.setCursor(0,0);
//oled.print(LPGSensor);
//oled.setCursor(0,20);
//oled.print(ButaneSensor);
//oled.setCursor(0,40);
//oled.print(KeroseneSensor);
//oled.display();
//Displays Sensor Readings
oled.setCursor(0,0);
if (LPGSensor<300){ oled.print("No LPG Leak");}
else if (LPGSensor>300 && LPGSensor<600){oled.print("LPG Leak");}
else{oled.print("Critical LPG Leak");}
oled.setCursor(0,20);
if (ButaneSensor<300){ oled.print("No Butane Leak");}
else if (ButaneSensor>300 && ButaneSensor<600){oled.print("Butane Leak");}
else{oled.print("Critical Butane Leak");}
oled.setCursor(0,40);
if (KeroseneSensor<300){ oled.print("No Kerosene Leak");}
else if (KeroseneSensor>300 && KeroseneSensor<600){ oled.print("Kerosene Leak");}
else{oled.print("Critical Kerosene Leak");}
//Outputs Exhaust Fan and Water Pump Depending on Sensor Level
if (LPGSensor>300 || ButaneSensor>300 || KeroseneSensor>300)
{digitalWrite(ExhaustFan,HIGH);}
else{digitalWrite(ExhaustFan,LOW);}
if (LPGSensor>600 || ButaneSensor>600 || KeroseneSensor>600)
{digitalWrite(WaterPump,HIGH);}
else {digitalWrite(WaterPump,LOW);}
}