#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd (0x27, 20,4);
float ver=00.01;
#define Blower 16 //Relay activated
#define COctrl 17 //Relay activated
#define Fan 19 //Relay activated
#define Pump 18 //Relay activated
#define Dayled 2 //Day phase Relay and led (now blue)
#define Humid 5 //Gnd goes to MOSFET
#define Alarmled 15 //General Alarm led (now yello)
//New Button pads
#define OKbtn 32
#define UPbtn 33
#define DNbtn 25
#define LTbtn 26
#define RTbtn 27
bool okV=1;
int outRA[]={16, 17, 19, 18, 2, 5}; //total 6 0-5
bool sttRA[6];
bool dayStt = 1;
bool niteStt = 0;
bool blowStt = 1;
bool coStt = 0; //CO2 gas RELAY
bool PumpStt=1;
bool fanStt=1;
bool alarmStt=0;
bool tstV;
bool ledV;
//Massage flags
bool msgA=0; //Main alarm OFF
bool msgB=0; //Light alarm
bool msgC=0;
bool msgD=0;
bool msgE=0; //Fan alarm
bool msgF=0;
bool msgG=0;
int AT=0; //Alarm Type
int i, j, k;
//Timing
unsigned long curT;
unsigned long prvT=0;
unsigned long dbncA;
unsigned long dbncB=0;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(Blower, OUTPUT);
pinMode(COctrl, OUTPUT);
pinMode(Fan, OUTPUT);
pinMode(Pump, OUTPUT);
pinMode(Dayled, OUTPUT);
pinMode(Humid, OUTPUT);
pinMode(Alarmled, OUTPUT);
pinMode(OKbtn, INPUT_PULLUP);
pinMode(UPbtn, INPUT_PULLUP);
pinMode(DNbtn, INPUT_PULLUP);
pinMode(LTbtn, INPUT_PULLUP);
pinMode(RTbtn, INPUT_PULLUP);
//digitalWrite(Dayled, 1);
lcd.setCursor(4,0);
lcd.print("Wellcome to:");
lcd.setCursor(4,1);
lcd.print("CAMP-Arduino");
lcd.setCursor(3,1);
lcd.print("AlarmSeq ver:");
lcd.setCursor(8,2);
lcd.print(ver);
delay(3000);
}
void loop() {
curT=millis();
//tstV=digitalRead(Fan);
//ledV=digitalRead(Dayled);
okV=digitalRead(OKbtn);
//Alarm OFF
if(okV==0){
dbncA=millis();
if(dbncA-dbncB>50){
okV=digitalRead(OKbtn);
if(okV==0){
msgE=0;
AT=0;
}
}
}
//Pin scan
if(curT-prvT>500){
if(digitalRead(Dayled)==0){
lcd.clear();
AT=1;
}
if(digitalRead(Fan)==0){
lcd.clear();
AT=3;
}
prvT=curT;
}
switch(AT){
case 0:
alarmStt=0;
digitalWrite(Alarmled, alarmStt);
if(msgA==0){
//lcd.clear();
lcd.setCursor(4,0);
lcd.print("CAMP-Arduino");
lcd.setCursor(1,1);
lcd.print("Alarm Sequence ver");
lcd.setCursor(8,2);
lcd.print(ver);
msgA=1;
msgB=0;
msgD=0;
msgE=0;
msgG=0;
delay(3000);
}
break;
case 1:
alarmStt=1;
digitalWrite(Alarmled, alarmStt);
if(msgB==0){
msgA=0;
msgD=0;
lcd.clear();
lcd.setCursor(4,0);
lcd.print("CAMP-Arduino");
lcd.setCursor(1,1);
lcd.print("LED isn't working!");
delay(1000);
msgB=1;
msgG=0;
}
break;
case 2:
alarmStt=1;
if(msgC==0){
Serial.println("Blower ERROR!");
msgC=1;
}
break;
case 3:
alarmStt=1;
digitalWrite(Alarmled, alarmStt);
if(msgD==0){
msgA=0;
msgB=0;
//lcd.clear();
lcd.setCursor(4,0);
lcd.print("CAMP-Arduino");
lcd.setCursor(1,2);
lcd.print("FAN isn't working!");
delay(1000);
msgD=1;
msgG=0;
}
break;
case 4:
alarmStt=1;
if(msgE==0){
Serial.println("Pump ERROR!");
msgE=1;
}
break;
case 5:
alarmStt=1;
if(msgF==0){
Serial.println("CO2 ERROR!");
msgF=1;
}
break;
}
digitalWrite(Alarmled, alarmStt);
}