Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********* Pleasedontcode.com **********
- Pleasedontcode thanks you for automatic code generation! Enjoy your code!
- - Terms and Conditions:
- You have a non-exclusive, revocable, worldwide, royalty-free license
- for personal and commercial use. Attribution is optional; modifications
- are allowed, but you're responsible for code maintenance. We're not
- liable for any loss or damage. For full terms,
- please visit pleasedontcode.com/termsandconditions.
- - Project: "Menu Navigation"
- - Source Code compiled for: Arduino Uno
- - Source Code created on: 2024-06-07 04:03:28
- ********* Pleasedontcode.com **********/
- /****** SYSTEM REQUIREMENTS *****/
- /****** SYSTEM REQUIREMENT 1 *****/
- /* lcd display i2c 20x4 button pin11 UPLOW menu up */
- /* button pin10 UP LOW menu enter button pin12UP LOW */
- /* menu down menu Temperatur->MaxTemp->code */
- /* ->MinTeamp->code Durchfluss(Flow)->MaxFlow->code */
- /* ->MinTeamp->code */
- /****** END SYSTEM REQUIREMENTS *****/
- /****** DEFINITION OF LIBRARIES *****/
- #include <EasyButton.h> // https://github.com/evert-arias/EasyButton
- #include <LiquidCrystal_I2C.h> // https://github.com/marcoschwartz/LiquidCrystal_I2C
- /****** FUNCTION PROTOTYPES *****/
- void setup(void);
- void loop(void);
- void onUpButtonPressed();
- void onDownButtonPressed();
- void onEnterButtonPressed();
- void displayMenu();
- void displaySubMenu(const char* title, const char* code);
- /***** DEFINITION OF DIGITAL INPUT PINS *****/
- const uint8_t UP_BUTTON_PIN = 11;
- const uint8_t DOWN_BUTTON_PIN = 12;
- const uint8_t ENTER_BUTTON_PIN = 10;
- /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
- EasyButton upButton(UP_BUTTON_PIN);
- EasyButton downButton(UP_BUTTON_PIN);
- EasyButton enterButton(UP_BUTTON_PIN);
- // Initialize the LCD object with the I2C address (0x27), number of columns (20), and number of rows (4)
- LiquidCrystal_I2C lcd(0x27, 20, 4);
- // Menu variables
- int menuIndex = 0;
- const char* menuItems[] = {"Temperatur", "Durchfluss(Flow)"};
- const char* subMenuItems[][2] = {{"MaxTemp", "MinTemp"}, {"MaxFlow", "MinFlow"}};
- const char* subMenuCodes[][2] = {{"code1", "code2"}, {"code3", "code4"}};
- int subMenuIndex = 0;
- bool inSubMenu = false;
- void setup(void) {
- // Initialize Serial for debugging purposes
- Serial.begin(115200);
- Serial.println();
- Serial.println(">>> EasyButton multiple buttons example <<<");
- // Initialize the buttons
- upButton.begin();
- downButton.begin();
- enterButton.begin();
- // Add the callback functions to be called when the buttons are pressed
- upButton.onPressed(onUpButtonPressed);
- downButton.onPressed(onDownButtonPressed);
- enterButton.onPressed(onEnterButtonPressed);
- // Initialize the LCD
- lcd.init();
- lcd.backlight();
- displayMenu();
- }
- void loop(void) {
- // Continuously read the status of the buttons
- upButton.read();
- downButton.read();
- enterButton.read();
- }
- // Callback function to be called when the UP button is pressed
- void onUpButtonPressed() {
- if (inSubMenu) {
- subMenuIndex = (subMenuIndex - 1 + 2) % 2; // Move up in the sub-menu
- displaySubMenu(menuItems[menuIndex], subMenuCodes[menuIndex][subMenuIndex]);
- } else {
- menuIndex = (menuIndex - 1 + 2) % 2; // Move up in the main menu
- displayMenu();
- }
- Serial.println("Up button pressed");
- }
- // Callback function to be called when the DOWN button is pressed
- void onDownButtonPressed() {
- if (inSubMenu) {
- subMenuIndex = (subMenuIndex + 1) % 2; // Move down in the sub-menu
- displaySubMenu(menuItems[menuIndex], subMenuCodes[menuIndex][subMenuIndex]);
- } else {
- menuIndex = (menuIndex + 1) % 2; // Move down in the main menu
- displayMenu();
- }
- Serial.println("Down button pressed");
- }
- // Callback function to be called when the ENTER button is pressed
- void onEnterButtonPressed() {
- if (inSubMenu) {
- // Perform action based on the selected sub-menu item
- Serial.print("Selected: ");
- Serial.println(subMenuCodes[menuIndex][subMenuIndex]);
- } else {
- inSubMenu = true;
- subMenuIndex = 0;
- displaySubMenu(menuItems[menuIndex], subMenuCodes[menuIndex][subMenuIndex]);
- }
- Serial.println("Enter button pressed");
- }
- // Function to display the main menu
- void displayMenu() {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Menu:");
- lcd.setCursor(0, 1);
- lcd.print(menuItems[menuIndex]);
- }
- // Function to display the sub-menu
- void displaySubMenu(const char* title, const char* code) {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(title);
- lcd.setCursor(0, 1);
- lcd.print(subMenuItems[menuIndex][subMenuIndex]);
- lcd.setCursor(0, 2);
- lcd.print(code);
- }
- /* END CODE */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement