CCCPaste

Button Control rev_01

/********* 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 Control
	- Source Code NOT compiled for: Arduino Uno
	- Source Code created on: 2024-10-02 08:44:36

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* Arduino library for debouncing momentary contact */
	/* switches, detect press, release, long press and */
	/* sequences with event definitions and callbacks. */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include 	// https://github.com/evert-arias/EasyButton
#include  // Include EasyButtonBase library
#include  // Include EasyButtonTouch library
#include  // Include EasyButtonVirtual library
#include  // Include Sequence library

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);

/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t elkewk_PushButton_PIN_D2 = 2;
const uint8_t elkewk_TouchButton_PIN_D3 = 3; // Example pin for touch button
const uint8_t elkewk_VirtualButton_PIN_D4 = 4; // Example pin for virtual button

/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
// Initialize EasyButton object for the defined pin
EasyButton button1(elkewk_PushButton_PIN_D2);
EasyButtonTouch touchButton(elkewk_TouchButton_PIN_D3); // Initialize EasyButtonTouch object
EasyButtonVirtual virtualButton(button1.read(), true); // Initialize EasyButtonVirtual object

// Initialize a Sequence object (example usage)
Sequence buttonSequence(3, 1000); // Example for 3 sequences with a duration of 1000 ms

/****** FUNCTION DEFINITIONS *****/
void onButton1Pressed() {
  Serial.println("Button1 pressed"); // Callback function for button press
}

void onTouchButtonPressed() {
  Serial.println("Touch button pressed"); // Callback function for touch button press
}

void onVirtualButtonPressed() {
  Serial.println("Virtual button pressed"); // Callback function for virtual button press
}

void setup(void)
{
	// Start serial communication for debugging
	Serial.begin(115200);
	
	// Print a message to the serial monitor
	Serial.println();
	Serial.println(">>> EasyButton example <<<");

	// Initialize the buttons
	button1.begin();
	touchButton.begin(); // Initialize touch button
	virtualButton.begin(); // Initialize virtual button

	button1.onPressed(onButton1Pressed); // Set the callback for button press
	touchButton.onPressed(onTouchButtonPressed); // Set the callback for touch button press
	virtualButton.onPressed(onVirtualButtonPressed); // Set the callback for virtual button press

	// Set the pin mode for the button (not necessary for EasyButton, but kept for reference)
	pinMode(elkewk_PushButton_PIN_D2, INPUT_PULLUP);
	pinMode(elkewk_TouchButton_PIN_D3, INPUT_PULLUP); // Set touch button pin mode
	pinMode(elkewk_VirtualButton_PIN_D4, INPUT_PULLUP); // Set virtual button pin mode
}

void loop(void)
{
	// Read the button states
	button1.read(); // This checks the button state and triggers the callback if pressed
	touchButton._readPin(); // Read the touch button state
	virtualButton.read(); // Read the virtual button state
}

/* END CODE */