boolean b_CI;
boolean b_CII;
boolean b_MAN_ON;
#include "ADebouncer.h"
#define buttonPin1 2 // Define the button input pin.
#define buttonPin2 3 // Define the button input pin.
#define debouncePeroid 10 // Define the debounce period in milliseconds
ADebouncer debouncer_1; // Declare debouncer variable.
ADebouncer debouncer_2; // Declare debouncer variable.
void fnc_interruptHandler_2(){
if (((b_MAN_ON == false) && ((((b_CI == true) && (digitalRead(3) == false)) || ((b_CII == true) && (digitalRead(2) == false)))))) {
analogWrite(5, 0);
b_CI = false;
b_CII = false;
}
}
void fnc_interruptHandler_3(){
if (((b_MAN_ON == false) && ((((b_CI == true) && (digitalRead(3) == false)) || ((b_CII == true) && (digitalRead(2) == false)))))) {
analogWrite(5, 0);
b_CI = false;
b_CII = false;
}
}
void setup()
{
pinMode(buttonPin1, INPUT_PULLUP); // Set the button mode as input pullup.
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(4, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2),fnc_interruptHandler_2,RISING);
attachInterrupt(digitalPinToInterrupt(3),fnc_interruptHandler_3,RISING);
pinMode(4, INPUT_PULLUP);
debouncer_1.mode(DELAYED, debouncePeroid, HIGH); // Set the debounce mode as delayed mode and debounce period as 10 ms, with the initial output in a HIGH state.
debouncer_2.mode(DELAYED, debouncePeroid, HIGH); // Set the debounce mode as delayed mode and debounce period as 10 ms, with the initial output in a HIGH state.
}
void loop()
{
bool new_CI = debouncer_1.debounce(digitalRead(buttonPin1)); // Save the debounced of the button state.
bool new_CII = debouncer_2.debounce(digitalRead(buttonPin2)); // Save the debounced of the button state.
if ((new_CI == false)) {
b_CI = true;
}
if ((new_CII == false)) {
b_CII = true;
}
if ((digitalRead(4) == false)) {
b_MAN_ON = true;
}
else if ((digitalRead(4) == true)) {
b_MAN_ON = false;
}
if ((b_CI == true)) {
digitalWrite(8, HIGH);
}
else if ((b_CI == false)) {
digitalWrite(8, LOW);
}
if ((b_CII == true)) {
digitalWrite(9, HIGH);
}
else if ((b_CII == false)) {
digitalWrite(9, LOW);
}
if (((b_MAN_ON == true) || (((b_CI == true) && (b_CII == false)) || ((b_CII == true) && (b_CI == false))))) {
analogWrite(5, 5);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delay(500);
analogWrite(5, 0);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(500);
digitalWrite(7, LOW);
}
}