////////////////
/* METHOD ONE */
////////////////
#define arrSize(x) sizeof(x) / sizeof(x[0])
#define MENU_RESET_DURATION 2000
#include "KTS_Button.h"
#include <LiquidCrystal_I2C.h>
KTS_Button button(6);
LiquidCrystal_I2C lcd(0x27, 16, 2);
char* menuItems[] = {"Signal Strength", "Store 4 Signals", "Store 8 Signals", "Store 12 Signals"}; // character array for menu
byte currentMenu = 0;
void displayMenu(byte item) {
lcd.clear();
lcd.print(menuItems[item]);
}
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
displayMenu(currentMenu);
}
void loop() {
ActionType action = button.read();
if (action == SINGLE_PRESS)
displayMenu(++currentMenu %= arrSize(menuItems));
else if (action == LONG_PRESS)
menuSelection();
}
void menuSelection() {
switch (currentMenu) {
case 0:
// sigStrength();
break;
case 1:
store(4);
break;
case 2:
store(8);
break;
case 3:
store(12);
break;
}
reset();
}
void store(int readings) {
lcd.setCursor(0, 1);
lcd.print("## Stored ");
lcd.print(readings);
lcd.print(" ##");
}
void reset() {
delay(MENU_RESET_DURATION);
currentMenu = 0;
displayMenu(currentMenu);
}
// ////////////////
// /* METHOD TWO */
// ////////////////
// #define arrSize(x) sizeof(x) / sizeof(x[0])
// #define MENU_CYCLE_INTERVAL 2000
// #include "KTS_Button.h"
// #include <LiquidCrystal_I2C.h>
// KTS_Button button(6);
// LiquidCrystal_I2C lcd(0x27, 16, 2);
// char* menuItems[] = {"Signal Strength", "Store 4 Signals", "Store 8 Signals", "Store 12 Signals"}; // character array for menu
// byte currentMenu = 0;
// uint32_t timeCapture;
// void displayMenu(byte item) {
// lcd.clear();
// lcd.print(menuItems[item]);
// }
// void cycleMenuItems() {
// if ((millis() - timeCapture) > MENU_CYCLE_INTERVAL) {
// timeCapture = millis();
// displayMenu(++currentMenu %= arrSize(menuItems));
// }
// }
// void setup() {
// Serial.begin(115200);
// lcd.init();
// lcd.backlight();
// displayMenu(currentMenu);
// timeCapture = millis();
// }
// void loop() {
// if (!button.read())
// cycleMenuItems();
// else {
// switch (currentMenu) {
// case 0:
// // sigStrength();
// break;
// case 1:
// store(4);
// break;
// case 2:
// store(8);
// break;
// case 3:
// store(12);
// break;
// }
// }
// }
// void store(int readings) {
// lcd.setCursor(0, 1);
// lcd.print("## Stored ");
// lcd.print(readings);
// lcd.print(" ##");
// reset();
// }
// void reset() {
// timeCapture = millis();
// currentMenu = arrSize(menuItems) - 1;
// }