#include <LiquidCrystal.h>
LiquidCrystal lcd1(19, 21, 22, 23, 13, 12);
LiquidCrystal lcd2(19, 14, 22, 23, 13, 12);
int buttonStart = 15, buttonStop = 2, buttonRed = 4, buttonGreen = 5, buttonBlue = 18;
bool running = false;
bool stopped = true;
int redIdentifier = 0, blueIdentifier = 0, greenIdentifier = 0;
int redval = 0, greenval = 0, blueval = 0;
int limit = 0;
void setup() {
lcd1.begin(16, 2);
lcd2.begin(16, 2);
pinMode(buttonStart, INPUT_PULLUP);
pinMode(buttonStop, INPUT_PULLUP);
pinMode(buttonRed, INPUT_PULLUP);
pinMode(buttonGreen, INPUT_PULLUP);
pinMode(buttonBlue, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(buttonStop), stop, FALLING);
attachInterrupt(digitalPinToInterrupt(buttonStart), start, FALLING);
}
void start() {
lcd2.clear();
defaultvalues();
lcd1.setCursor(4, 0);
lcd1.print("Operation ");
lcd1.setCursor(5, 2);
lcd1.print("Started ");
running = true;
stopped = false;
}
void defaultvalues(){
redval = 0, greenval = 0, blueval = 0;
redIdentifier = 0, blueIdentifier = 0, greenIdentifier = 0;
limit = 0;
}
void stop() {
defaultvalues();
lcd2.clear();
lcd1.setCursor(4, 0);
lcd1.print("Operation ");
lcd1.setCursor(5, 2);
lcd1.print("Stopped ");
stopped = true;
running = false;
}
void loop() {
if (digitalRead(buttonRed) == LOW){
redval++;
delay(200);
} else if (digitalRead(buttonGreen) == LOW){
greenval++;
delay(200);
} else if (digitalRead(buttonBlue) == LOW){
blueval++;
delay(200);
}
if (redval == 1 && running == true && redIdentifier == 0){
lcd2.clear();
lcd2.setCursor(5, 0);
lcd2.print("Red_1 ");
lcd2.setCursor(5, 2);
lcd2.print("Moves ");
redIdentifier = 1;
limit++;
redval++;
delay(200);
}
if (redval == 3 && running == true && redIdentifier == 1){
lcd2.clear();
lcd2.setCursor(5, 0);
lcd2.print("Red_2 ");
lcd2.setCursor(5, 2);
lcd2.print("Moves ");
redIdentifier = 2;
limit++;
redval++;
delay(200);
}
if (redval >= 5 && running == true && redIdentifier == 2){
lcd2.clear();
lcd2.setCursor(3, 0);
lcd2.print("Please Pick ");
lcd2.setCursor(2, 2);
lcd2.print("Another Color ");
redIdentifier = 3;
delay(200);
}
if (greenval == 1 && running == true && greenIdentifier == 0){
lcd2.clear();
lcd2.setCursor(4, 0);
lcd2.print("Green_1 ");
lcd2.setCursor(5, 2);
lcd2.print("Moves ");
greenIdentifier = 1;
limit++;
greenval++;
delay(200);
}
if (greenval == 3 && running == true && greenIdentifier == 1){
lcd2.clear();
lcd2.setCursor(4, 0);
lcd2.print("Green_2 ");
lcd2.setCursor(5, 2);
lcd2.print("Moves ");
greenIdentifier = 2;
limit++;
greenval++;
delay(200);
}
if (greenval >= 5 && running == true && greenIdentifier == 2){
lcd2.clear();
lcd2.setCursor(3, 0);
lcd2.print("Please Pick ");
lcd2.setCursor(2, 2);
lcd2.print("Another Color ");
greenIdentifier = 3;
delay(200);
}
if (blueval == 1 && running == true && blueIdentifier == 0){
lcd2.clear();
lcd2.setCursor(4, 0);
lcd2.print("Blue_1 ");
lcd2.setCursor(5, 2);
lcd2.print("Moves ");
blueIdentifier = 1;
limit++;
blueval++;
delay(200);
}
if (blueval == 3 && running == true && blueIdentifier == 1){
lcd2.clear();
lcd2.setCursor(4, 0);
lcd2.print("Blue_2 ");
lcd2.setCursor(5, 2);
lcd2.print("Moves ");
blueIdentifier = 2;
limit++;
blueval++;
delay(200);
}
if (blueval >= 5 && running == true && blueIdentifier == 2){
lcd2.clear();
lcd2.setCursor(3, 0);
lcd2.print("Please Pick ");
lcd2.setCursor(2, 2);
lcd2.print("Another Color ");
blueIdentifier = 3;
delay(200);
}
if (limit >= 5 && running == true){
delay(1000);
lcd2.clear();
lcd2.setCursor(5, 0);
lcd2.print("LIMIT ");
lcd2.setCursor(4, 2);
lcd2.print("REACHED ");
running = false;
stopped = true;
defaultvalues();
}
}