/*
*/
//#include <SPI.h>
//#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); //*************
const byte button_set = A0;
const byte button_up = A1;
const byte button_down = A2;
const byte button_cancel = A3;
void setup() {
//SPI.begin(); // LCD pin A4,A5
Serial.begin(115200);
lcd.begin(4,20);
lcd.backlight(); delay(1000);
pinMode(button_set, INPUT_PULLUP);
pinMode(button_up, INPUT_PULLUP);
pinMode(button_down, INPUT_PULLUP);
pinMode(button_cancel, INPUT_PULLUP);
}
void loop() {
boolean Display = true; //*****
boolean ButtonSet = false; //**********
if(Display == true){
Display = false;
lcd.setCursor(0,0); lcd.print("LCD 16x2 MENU ");
lcd.setCursor(0,1); lcd.print("Font Display ");
//"01234567890123456789"
}
if(digitalRead(button_set) == 0){ //0
delay(100);
if(digitalRead(button_set) == 0){
if(ButtonSet == false){
ButtonSet = true; //*******
Select_MENU();
}
}
} else {
ButtonSet = false;
}
}
////////////////////////////////////////////////////////////////
void Select_MENU()
{
boolean Display = true; //*********true
//boolean Display = false;
//boolean Exit = true;
boolean Exit = false; //********false
boolean ButtonSet = true; //*********true
boolean ButtonUp = false;
boolean ButtonDown = false;
boolean ButtonCancel = false;
byte Menu = 0; // "01234567890123456789"
const String MenuText[4] = { "1: Menu 1 .........0",
"2: Menu 2 .........1",
"3: Menu 3 .........2",
"4: Menu 4 .........3" };
////////////////////////////////////////////////////////////////////
//Serial.println(ButtonSet); //******
while (Exit == false) {
if(Display == true) {
lcd.setCursor(0, 0); lcd.print("SELECT MENU 1-4 ");
lcd.setCursor(0, 1); lcd.print(MenuText[Menu]); //************
}
// *** Set
if(digitalRead(button_set) == 0){
delay(10); //Serial.println(ButtonSet); // *** ButtonSet=true
if(digitalRead(button_set) == 0){
if (ButtonSet == false){ // *** ButtonSet=true **not select menu 1
ButtonSet = true;
//***************************
//Serial.println(Menu);
switch(Menu){
case 0: Serial.println("1: Menu 1 .........0");
lcd_menu1(); // add command
break;
case 1: Serial.println("2: Menu 2 .........1");
// add command
break;
case 2: Serial.println("3: Menu 3 .........2");
// add command
break;
case 3: Serial.println("4: Menu 4 .........3");
// add command
break;
}
}
}
} else {
ButtonSet = false;
}
// *** Up
if(digitalRead(button_up) == 0){
delay(100);
if(digitalRead(button_up) == 0){
if (ButtonUp == false){
ButtonUp = true;
}
if(Menu <= 2){
Menu++; //Serial.println(Menu);
} else Menu = 3;
}
} else {
ButtonUp = false;
}
// *** Down
if(digitalRead(button_down) == 0){
delay(100);
if(digitalRead(button_down) == 0){
if (ButtonDown == false){
ButtonDown = true;
//*****
if(Menu >= 1){
Menu--; //Serial.println(Menu);
} else Menu = 0;
}
} else {
ButtonDown = false;
}
}
// *** Cancle
if(digitalRead(button_cancel) == 0){
delay(100);
if(digitalRead(button_cancel) == 0){
if (ButtonCancel == false){
ButtonCancel = true;
Exit = true;
//Display = true;
}
}
} else {
ButtonCancel = false;
}
} // while ...
delay(100);
}
////////////////////////
void lcd_menu1()
{
lcd.setCursor(0, 3); lcd.print("Add command menu 1");
}
// https://www.youtube.com/watch?v=fuL3fRTxCuk&t=949s