/********* 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 compiled for: ESP32 DevKit V1
- Source Code created on: 2024-04-15 10:18:19
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* Use esp now to turn on anoutput as long as the */
/* button is pressed add power saving */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
#include // Library for handling buttons
#include // Library for ESP Now communication
#include // Library for WiFi functionality
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void onButtonPressed(); // Callback function for button press event
/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t Up_PushButton_PIN_D4 = 4;
const uint8_t Down_PushButton_PIN_D13 = 13;
const uint8_t Lift_PushButton_PIN_D14 = 14;
const uint8_t Drop_PushButton_PIN_D16 = 16;
/****** DEFINITION OF LIBRARY CLASS INSTANCES *****/
EasyButton upButton(Up_PushButton_PIN_D4);
EasyButton downButton(Down_PushButton_PIN_D13);
EasyButton liftButton(Lift_PushButton_PIN_D14);
EasyButton dropButton(Drop_PushButton_PIN_D16);
/****** DEFINITION OF ESP NOW VARIABLES *****/
const uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // Broadcast address for ESP Now
uint8_t outputPinState = LOW; // Initial state of the output pin
const uint8_t outputPin = 2; // Output pin to control
void setup(void)
{
// put your setup code here, to run once:
Serial.begin(115200);
// Initialize ESP Now
if (esp_now_init() != ESP_OK) {
Serial.println("ESP Now initialization failed");
while (true);
}
// Register callback function for ESP Now data reception
esp_now_register_recv_cb([](const uint8_t* mac, const uint8_t* data, int len) {
// Handle received data if needed
});
// Set ESP Now peer address to broadcast address
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
// Add ESP Now peer
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Failed to add ESP Now peer");
while (true);
}
// Set output pin as output
pinMode(outputPin, OUTPUT);
// Set callback function for button press event
upButton.onPressed(onButtonPressed);
downButton.onPressed(onButtonPressed);
liftButton.onPressed(onButtonPressed);
dropButton.onPressed(onButtonPressed);
}
void loop(void)
{
// put your main code here, to run repeatedly:
upButton.read();
downButton.read();
liftButton.read();
dropButton.read();
// Send ESP Now message to control the output pin
esp_now_send(broadcastAddress, &outputPinState, sizeof(outputPinState));
delay(100);
}
void onButtonPressed()
{
// Toggle the output pin state
outputPinState = !outputPinState;
digitalWrite(outputPin, outputPinState);
// Print button pressed message
Serial.println("Button pressed");
}