/********* 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: "LED Toggle" - Source Code NOT compiled for: Arduino Nano ESP32 - Source Code created on: 2024-06-13 13:10:56 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* when b1_pushbutton is pressed log to internal */ /* memory and write how many times and the state to */ /* mysql using php */ /****** SYSTEM REQUIREMENT 2 *****/ /* when b1_pushbutton or b2_Pushbutton has updated */ /* mysql database turn on led5_LED for 2 seconds */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include // https://github.com/evert-arias/EasyButton /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); void updateOutputs(void); void onButton1Pressed(void); void onButton2Pressed(void); void logButtonPressToMemoryAndDatabase(int buttonID); void turnOnLed5For2Seconds(void); /***** DEFINITION OF DIGITAL INPUT PINS *****/ const uint8_t b1_PushButton_PIN_D2 = 2; const uint8_t b2_PushButton_PIN_D3 = 3; /***** DEFINITION OF DIGITAL OUTPUT PINS *****/ const uint8_t led1b1_LED_PIN_D4 = 4; const uint8_t led2b2_LED_PIN_D5 = 5; const uint8_t led5_LED_PIN_D6 = 6; /***** DEFINITION OF OUTPUT RAW VARIABLES *****/ /***** used to store raw data *****/ bool led1b1_LED_PIN_D4_rawData = 0; bool led2b2_LED_PIN_D5_rawData = 0; bool led5_LED_PIN_D6_rawData = 0; /***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/ /***** used to store data after characteristic curve transformation *****/ float led1b1_LED_PIN_D4_phyData = 0.0; float led2b2_LED_PIN_D5_phyData = 0.0; float led5_LED_PIN_D6_phyData = 0.0; /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/ EasyButton button1(b1_PushButton_PIN_D2); // Initialize EasyButton for button 1 EasyButton button2(b2_PushButton_PIN_D3); // Initialize EasyButton for button 2 void setup(void) { // put your setup code here, to run once: Serial.begin(115200); // Initialize serial communication Serial.println(); Serial.println(">>> EasyButton multiple buttons example <<<"); pinMode(b1_PushButton_PIN_D2, INPUT_PULLUP); pinMode(b2_PushButton_PIN_D3, INPUT_PULLUP); pinMode(led1b1_LED_PIN_D4, OUTPUT); pinMode(led2b2_LED_PIN_D5, OUTPUT); pinMode(led5_LED_PIN_D6, OUTPUT); button1.begin(); // Initialize button 1 button2.begin(); // Initialize button 2 button1.onPressed(onButton1Pressed); // Attach callback for button 1 button2.onPressed(onButton2Pressed); // Attach callback for button 2 } void loop(void) { // put your main code here, to run repeatedly: button1.read(); // Read the state of button 1 button2.read(); // Read the state of button 2 updateOutputs(); // Refresh output data } void updateOutputs() { digitalWrite(led1b1_LED_PIN_D4, led1b1_LED_PIN_D4_rawData); digitalWrite(led2b2_LED_PIN_D5, led2b2_LED_PIN_D5_rawData); digitalWrite(led5_LED_PIN_D6, led5_LED_PIN_D6_rawData); } void onButton1Pressed() { Serial.println("Button1 pressed"); led1b1_LED_PIN_D4_rawData = !led1b1_LED_PIN_D4_rawData; // Toggle LED state logButtonPressToMemoryAndDatabase(1); // Log button press to memory and database turnOnLed5For2Seconds(); // Turn on LED5 for 2 seconds } void onButton2Pressed() { Serial.println("Button2 pressed"); led2b2_LED_PIN_D5_rawData = !led2b2_LED_PIN_D5_rawData; // Toggle LED state logButtonPressToMemoryAndDatabase(2); // Log button press to memory and database turnOnLed5For2Seconds(); // Turn on LED5 for 2 seconds } void logButtonPressToMemoryAndDatabase(int buttonID) { // Log to internal memory (this is a placeholder, replace with actual logging code) static int button1PressCount = 0; static int button2PressCount = 0; if (buttonID == 1) { button1PressCount++; Serial.print("Button 1 Press Count: "); Serial.println(button1PressCount); } else if (buttonID == 2) { button2PressCount++; Serial.print("Button 2 Press Count: "); Serial.println(button2PressCount); } // Write to MySQL database using PHP (this is a placeholder, replace with actual database code) // Example: http://yourserver.com/log_button_press.php?button_id=1&count=button1PressCount } void turnOnLed5For2Seconds() { led5_LED_PIN_D6_rawData = 1; // Turn on LED5 updateOutputs(); // Update outputs to reflect the change delay(2000); // Wait for 2 seconds led5_LED_PIN_D6_rawData = 0; // Turn off LED5 updateOutputs(); // Update outputs to reflect the change } /* END CODE */