#include <elapsedMillis.h>

elapsedMillis Millis_AlarmLED1;
elapsedMillis Millis_AlarmBUZ1;

elapsedMillis Millis_AlarmLED2;
elapsedMillis Millis_AlarmBUZ2;

const int pinFloatingSwitch1  = 2;
const int pinFloatingSwitch2  = 3;
const int pinLED1             = 4;
const int pinLED2             = 5;
const int pinBuzzer           = 6;
const int pinPB_Reset1        = 7;
const int pinPB_Reset2        = 8;

bool      readFS1 = 0;
bool      readFS2 = 0;
bool      readReset1 = 0;
bool      readReset2 = 0;

bool      stateLED1 = 0;
bool      stateLED2 = 0;

bool      stateBUZ1 = 0;
bool      stateBUZ2 = 0;
bool      stateBUZTotal = 0;

bool      reset1 = 0;
bool      reset2 = 0;

bool      flag1 = 0;
bool      flag2 = 0;
bool      flag3 = 0;
bool      flag4 = 0;

void setup() {
 Serial.begin(115200);
 pinMode(pinFloatingSwitch1, INPUT_PULLUP);
 pinMode(pinFloatingSwitch2, INPUT_PULLUP);
 pinMode(pinPB_Reset1, INPUT_PULLUP);
 pinMode(pinPB_Reset2, INPUT_PULLUP);
 pinMode(pinLED1, OUTPUT);
 pinMode(pinLED2, OUTPUT);
 pinMode(pinBuzzer, OUTPUT);
}

void loop() {
  readFS1 = !digitalRead(pinFloatingSwitch1);
  readFS2 = !digitalRead(pinFloatingSwitch2);
  readReset1 = !digitalRead(pinPB_Reset1);
  readReset2 = !digitalRead(pinPB_Reset2);
  
  //ALGORITMA TANK 1
  if(readFS1 == 1){
    flag1 = 0;
    if(flag3 == 0){
      reset1 = 0;    
      reset2 = 0; 
      flag3 = 1;
    }  

    stateBUZ1 = 1;
    //RESET LED
     if(readReset1 == 1){
      reset1 = 1;
    }
    if(reset1 == 0){
      if(Millis_AlarmLED1 >= 300){
        stateLED1 = !stateLED1;
        Millis_AlarmLED1 = 0;
      }
    }
    else{
      stateLED1 = 1; 
      Millis_AlarmLED1 = 0;
    }
    digitalWrite(pinLED1, stateLED1);
  }
  else{
    stateBUZ1 = 0;
    digitalWrite(pinLED1, LOW);
    flag3 = 0;
    if(flag1 == 0){
      reset1 = 0;    
      reset2 = 0;  
      flag1 = 1;
    }  
  }

//ALGORITMA TANK 2
  if(readFS2 == 1){
    flag2 = 0;
     if(flag4 == 0){
      reset1 = 0;    
      reset2 = 0; 
      flag4 = 1;
     }  

     stateBUZ2 = 1;
    //RESET LED
     if(readReset1 == 1){
      reset1 = 1;
    }
    if(reset1 == 0){
      if(Millis_AlarmLED2 >= 300){
        stateLED2 = !stateLED2;
        Millis_AlarmLED2 = 0;
      }
    }
    else{
      stateLED2 = 1; 
      Millis_AlarmLED2 = 0;
    }
    digitalWrite(pinLED2, stateLED2);
  }
  else{
     stateBUZ2 = 0;
     digitalWrite(pinLED2, LOW);
     flag4 = 0;
     if(flag2 == 0){
      reset1 = 0;    
      reset2 = 0; 
      flag2 = 1;
     }  
  }

  //RESET BUZZER
  if(readReset2 == 1){
    reset2 = 1;
  }
  if(reset2 == 0){
    stateBUZTotal = stateBUZ1 + stateBUZ2;
  }
  else{
    stateBUZTotal = 0;
  }   

  if(stateBUZTotal > 0){
    digitalWrite(pinBuzzer, HIGH);
  }
  else{
    digitalWrite(pinBuzzer, LOW);
  }

  Serial.print(readFS1);Serial.print("\t");
  Serial.print(readFS2);Serial.print("\t");
  Serial.print(readReset1);Serial.print("\t");
  Serial.print(readReset2);Serial.print("\t");
  Serial.print("\t");
  Serial.print(reset1);Serial.print("\t");
  Serial.print(reset2);Serial.print("\t");
  Serial.print(stateBUZTotal);Serial.print("\t");
  Serial.println();
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
sw1:1
sw1:2
sw1:3
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
led1:A
led1:C
bz1:1
bz1:2
sw2:1
sw2:2
sw2:3
led2:A
led2:C
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
led3:A
led3:C