#include<Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
unsigned long currentMillis = 0;
const unsigned long btn_1Period = 5;
const unsigned long btn_2Period = 10;
const unsigned long btn_3Period = 15;
const unsigned long btn_4Period = 20;
const unsigned long btn_5Period = 25;
const unsigned long btn_6Period = 30;
const unsigned long interval1 = 1000;
const unsigned long interval2 = 2000;
const unsigned long interval3 = 3000;
const unsigned long interval4 = 4000;
const unsigned long interval5 = 4001;
unsigned long btn_1PrevMillis = 0;
unsigned long btn_2PrevMillis = 0;
unsigned long btn_3PrevMillis = 0;
unsigned long btn_4PrevMillis = 0;
unsigned long btn_5PrevMillis = 0;
unsigned long btn_6PrevMillis = 0;
unsigned long led_ChasePrevMillis = 0;
const int sw_1 = 2;
const int sw_2 = 3;
const int sw_3 = 4;
const int sw_4 = 5;
const int sw_5 = 6;
const int sw_6 = 7;
const int led_1 = 10;
const int led_2 = 11;
const int led_3 = 12;
const int led_4 = 13;
int state_1 = LOW;
int state_2 = LOW;
int state_3 = LOW;
int state_4 = LOW;
int state_5 = LOW;
int state_6 = LOW;
void setup() {
lcd.init();
lcd.backlight();
pinMode(sw_1, INPUT);
pinMode(sw_2, INPUT);
pinMode(sw_3, INPUT);
pinMode(sw_4, INPUT);
pinMode(sw_5, INPUT);
pinMode(sw_6, INPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Wellcome To");
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Fabric Shade Machine");
delay(2000);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Machine On");
delay(1000);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing.");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing..");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing...");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing....");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing.....");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing......");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing.......");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(0, 2);
lcd.print("Initializing........");
delay(200);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Machine Ready");
delay(1000);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
}
void loop() {
// put your main code here, to run repeatedly:
currentMillis = millis();
buttonState_1();
buttonState_2();
buttonState_3();
buttonState_4();
buttonState_5();
buttonState_6();
}
void buttonState_1(){
if (currentMillis - btn_1PrevMillis >= btn_1Period){
btn_1PrevMillis = currentMillis;
int a = digitalRead(sw_1);
if (a == HIGH){
state_1=!state_1;
//digitalWrite(led_1, state_1);
digitalWrite(led_1, HIGH);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
state_2 = LOW;
state_3 = LOW;
state_4 = LOW;
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light 1 ON");
}
}
}
void buttonState_2(){
if (currentMillis - btn_2PrevMillis >= btn_2Period){
btn_2PrevMillis = currentMillis;
int b = digitalRead(sw_2);
if (b == HIGH){
state_2=!state_2;
//digitalWrite(led_2, state_2);
digitalWrite(led_2, HIGH);
digitalWrite(led_1, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
state_1 = LOW;
state_3 = LOW;
state_4 = LOW;
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light 2 ON");
}
}
}
void buttonState_3(){
if (currentMillis - btn_3PrevMillis >= btn_3Period){
btn_3PrevMillis = currentMillis;
int c = digitalRead(sw_3);
if (c == HIGH){
state_3=!state_3;
//digitalWrite(led_3, state_3);
digitalWrite(led_3, HIGH);
digitalWrite(led_2, LOW);
digitalWrite(led_1, LOW);
digitalWrite(led_4, LOW);
state_2 = LOW;
state_1 = LOW;
state_4 = LOW;
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light 3 ON");
}
}
}
void buttonState_4(){
if (currentMillis - btn_4PrevMillis >= btn_4Period){
btn_4PrevMillis = currentMillis;
int d = digitalRead(sw_4);
if (d == HIGH){
state_4=!state_4;
//digitalWrite(led_4, state_4);
digitalWrite(led_4, HIGH);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_1, LOW);
state_2 = LOW;
state_3 = LOW;
state_1 = LOW;
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light 4 ON");
}
}
}
void buttonState_5(){
if (currentMillis - btn_5PrevMillis >= btn_5Period){
btn_5PrevMillis = currentMillis;
int e = digitalRead(sw_5);
if (e == HIGH){
state_5=!state_5;
do{
if (currentMillis - led_ChasePrevMillis > interval1 && currentMillis - led_ChasePrevMillis < interval2){
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light Testing");
digitalWrite (led_1,HIGH);
digitalWrite (led_2,LOW);
digitalWrite (led_3,LOW);
digitalWrite (led_4,LOW);}
if (currentMillis - led_ChasePrevMillis > interval2 && currentMillis - led_ChasePrevMillis < interval3){
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light Testing");
digitalWrite (led_1,LOW);
digitalWrite (led_2,HIGH);
digitalWrite (led_3,LOW);
digitalWrite (led_4,LOW);}
if (currentMillis - led_ChasePrevMillis > interval3 && currentMillis - led_ChasePrevMillis < interval4){
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light Testing");
digitalWrite (led_1,LOW);
digitalWrite (led_2,LOW);
digitalWrite (led_3,HIGH);
digitalWrite (led_4,LOW);}
if (currentMillis - led_ChasePrevMillis > interval4){
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("Light Testing");
digitalWrite (led_1,LOW);
digitalWrite (led_2,LOW);
digitalWrite (led_3,LOW);
digitalWrite (led_4,HIGH);}
if (currentMillis - led_ChasePrevMillis > interval5){
led_ChasePrevMillis = currentMillis;
}
state_5 = LOW;
}
while(state_5 == HIGH);
if(state_5 = LOW){
digitalWrite (led_1,LOW);
digitalWrite (led_2,LOW);
digitalWrite (led_3,LOW);
digitalWrite (led_4,LOW);
}
}
}
}
void buttonState_6(){
if (currentMillis - btn_6PrevMillis >= btn_6Period){
btn_6PrevMillis = currentMillis;
int f = digitalRead(sw_6);
if (f == HIGH){
state_6=!state_6;
if(state_6 == HIGH){
state_1 = LOW;
state_2 = LOW;
state_3 = LOW;
state_4 = LOW;
state_5 = LOW;
//digitalWrite(led_1, state_1);
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
lcd.setCursor(4, 2);
lcd.print("All Lights OFF");
delay(1500);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Sublime Greentex Ltd");
}
}
}
}