I have redraw the code, here it won't flicker anymore. But, when I press rewuired button to select let say 5V 1A, it won't turn ON LED attached to it. Here is the code:
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int menuitem = 1;
int page = 1;
boolean oneamp = false;
boolean twoamp = false;
boolean threeamp = false;
int oneampState = 0;
int twoampState = 0;
int threeampState = 0;
volatile boolean up = false;
volatile boolean down = false;
volatile boolean select = false;
int downButtonState = 0;
int upButtonState = 0;
int selectButtonState = 0;
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;
void setup() {
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(1,0);
pinMode(9, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(0, INPUT_PULLUP);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
Serial.begin(9600);
}
void loop() {
drawMenu();
downButtonState = digitalRead(1);
selectButtonState = digitalRead(0);
upButtonState = digitalRead(9);
oneampState = digitalWrite(6);
twoampState = digitalWrite(7);
threeampState = digitalWrite(
;
checkIfDownButtonIsPressed();
checkIfUpButtonIsPressed();
checkIfSelectButtonIsPressed();
if (up == 1 ) //UP Button Menuitem Logics
{
up = false;
menuitem--;
if (menuitem==0)
{
menuitem=1;
}
if (menuitem==2)
{
menuitem=1;
}
if (menuitem==3)
{
menuitem=2;
}
}
if (down == 1 ) //DOWN Button Menuitem Logics
{
down = false;
menuitem++;
if (menuitem==1)
{
menuitem=2;
}
if (menuitem==2)
{
menuitem=3;
}
if (menuitem==3)
{
menuitem=3;
}
}
if (select == 1)
{
select = false;
if(menuitem==1)
{
if(oneamp)
{
digitalWrite( oneampState, HIGH );
digitalWrite( twoampState, LOW );
digitalWrite( threeampState, LOW );
}
else
{
digitalWrite( oneamp, LOW );
digitalWrite( twoamp, LOW );
digitalWrite( threeamp, LOW );
}
}
if (menuitem==2)
{
if(twoamp)
{
digitalWrite( oneamp, LOW );
digitalWrite( twoamp, HIGH );
digitalWrite( threeamp, LOW );
}
else
{
digitalWrite( oneamp, LOW );
digitalWrite( twoamp, LOW );
digitalWrite( threeamp, LOW );
}
}
if (menuitem==3)
{
if (threeamp)
{
digitalWrite( oneamp, LOW );
digitalWrite( twoamp, LOW );
digitalWrite( threeamp, HIGH );
}
else
{
digitalWrite( oneamp, LOW );
digitalWrite( twoamp, LOW );
digitalWrite( threeamp, LOW );
}
}
}
}
void checkIfDownButtonIsPressed()
{
if (downButtonState != lastDownButtonState)
{
if (downButtonState == 1)
{
down=true;
}
delay(50);
}
lastDownButtonState = downButtonState;
}
void checkIfUpButtonIsPressed()
{
if (upButtonState != lastUpButtonState)
{
if (upButtonState == 1) {
up=true;
}
delay(50);
}
lastUpButtonState = upButtonState;
}
void checkIfSelectButtonIsPressed()
{
if (selectButtonState != lastSelectButtonState)
{
if (selectButtonState == 1) {
select=true;
}
delay(50);
}
lastSelectButtonState = selectButtonState;
}
void drawMenu()
{
if (page==1)
{
lcd.setCursor(1, 0);
lcd.print("MAIN MENU");
if (menuitem==1)
{
lcd.setCursor(1, 1);
lcd.print(">5V 1A: ");
if (oneamp)
{
lcd.print(" ON ");
}
else
{
lcd.print(" OFF ");
}
}
if (menuitem==2)
{
lcd.setCursor(1, 2);
lcd.print(">5V 2A: ");
if (twoamp)
{
lcd.print(" ON ");
}
else
{
lcd.print(" OFF ");
}
}
if (menuitem==3)
{
lcd.setCursor(1, 3);
lcd.print(">5V 3A: ");
if (threeamp)
{
lcd.print(" ON ");
}
else
{
lcd.print(" OFF ");
}
}
}
}