#include #include #include //define pages #define page_home 1 #define page_sub 2 //define menu items #define home_item_one 1 #define home_item_two 2 #define sub_item_one 1 #define sub_item_two 2 //define default contrast int contrast=57 //buttons 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; // Variables declared as volatile to ensure they wont be optomised out of the code volatile int homeItem = 1; volatile int subItem = 1; volatile int page = 1; Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); void setup() { pinMode(10, INPUT_PULLUP); //button UP pinMode(11, INPUT_PULLUP); //button SELECT pinMode(12, INPUT_PULLUP); //button DOWN Serial.begin(9600); display.begin(); display.setContrast(contrast); //Set contrast to 57 in this case display.clearDisplay(); display.display(); } void loop() { downButtonState = digitalRead(12); selectButtonState = digitalRead(11); upButtonState = digitalRead(10); checkIfDownButtonIsPressed(); checkIfUpButtonIsPressed(); checkIfSelectButtonIsPressed(); switch(page) { case page_home: drawHome(); break; case page_sub: drawSub(); break; } } void drawHome() { display.setTextSize(1); display.clearDisplay(); display.setTextColor(BLACK, WHITE); display.setCursor(15, 0); display.print("MAIN MENU"); display.drawFastHLine(0,8,84,BLACK); display.setCursor(0, 10); if(homeItem == home_item_one) { display.setTextColor(WHITE, BLACK); } else { display.setTextColor(BLACK, WHITE); } display.print("Home Item 1"); display.setCursor(0, 20); if(homeItem == home_item_two) { display.setTextColor(WHITE, BLACK); } else { display.setTextColor(BLACK, WHITE); } display.print("Home Item 2"); display.display(); } void drawSub() { display.setTextSize(1); display.clearDisplay(); display.setTextColor(BLACK, WHITE); display.setCursor(15, 0); display.print("SUB MENU"); display.drawFastHLine(0,8,84,BLACK); display.setCursor(0, 18); if(subItem == sub_item_one) { display.setTextColor(WHITE, BLACK); } else { display.setTextColor(BLACK, WHITE); } display.print(">Sub Item 1"); display.setCursor(0, 28); if(subItem == sub_item_two) { display.setTextColor(WHITE, BLACK); } else { display.setTextColor(BLACK, WHITE); } display.print(">Sub Item 2"); display.display(); } void checkIfDownButtonIsPressed() { if (downButtonState != lastDownButtonState) { if (downButtonState == 0) { down=true; } delay(50); } lastDownButtonState = downButtonState; } void checkIfUpButtonIsPressed() { if (upButtonState != lastUpButtonState) { if (upButtonState == 0) { up=true; } delay(50); } lastUpButtonState = upButtonState; } void checkIfSelectButtonIsPressed() { if (selectButtonState != lastSelectButtonState) { if (selectButtonState == 0) { select=true; } delay(50); } lastSelectButtonState = selectButtonState; }