Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/********* 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: "Button Navigation" - Source Code NOT compiled for: Arduino Uno - Source Code created on: 2024-06-07 03:59:52 ********* 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
// https://github.com/evert-arias/EasyButton #include
// 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 */
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)