/********* 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: WiFi Button
- Source Code NOT compiled for: ESP32 DevKit V1
- Source Code created on: 2024-10-01 21:29:52
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* Configure WiFi and timezone settings with web page */
/* available via both AP and STA */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
#include
#include // Include WiFi library for network connectivity
#include //https://github.com/evert-arias/EasyButton
#include //https://github.com/stblassitude/Adafruit_SSD1306_Wemos_OLED.git
#include //https://github.com/olikraus/U8g2_for_Adafruit_GFX
#include "DisplayHandler.h" // Include the display handler header
#include "EasyButtonHandler.h" // Include the EasyButton handler header
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void updateOutputs();
void configureWiFi(); // Function to configure WiFi settings
/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t test_PushButton_PIN_D4 = 4;
/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t relay_RelayModule_Signal_PIN_D13 = 13;
/***** DEFINITION OF OUTPUT RAW VARIABLES *****/
bool relay_RelayModule_Signal_PIN_D13_rawData = 0;
/***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/
float relay_RelayModule_Signal_PIN_D13_phyData = 0.0;
/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
// Create an EasyButton object for the button
EasyButton button1(test_PushButton_PIN_D4); // Initialize button with pin D4
// Create an Adafruit_SSD1306 object for the OLED display
// The display object is now initialized in DisplayHandler.h
// Create a U8G2_FOR_ADAFRUIT_GFX object
U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx;
void setup(void)
{
// put your setup code here, to run once:
Serial.begin(115200); // Initialize serial communication for debugging
pinMode(test_PushButton_PIN_D4, INPUT_PULLUP);
pinMode(relay_RelayModule_Signal_PIN_D13, OUTPUT);
// Initialize the button
button1.begin();
button1.onPressed(onButton1Pressed); // Set the callback for button press
// Initialize the OLED display
initializeDisplay(); // Call the display initialization function
// Configure WiFi settings
configureWiFi(); // Call the function to configure WiFi
}
void loop(void)
{
// put your main code here, to run repeatedly:
updateOutputs(); // Refresh output data
button1.read(); // Read the button state
}
void updateOutputs()
{
digitalWrite(relay_RelayModule_Signal_PIN_D13, relay_RelayModule_Signal_PIN_D13_rawData);
}
// Callback function for button press
void onButton1Pressed() {
Serial.println("Button1 pressed"); // Print message to serial monitor
}
// Function to configure WiFi settings
void configureWiFi() {
const char* ssid = "Your_SSID"; // Replace with your WiFi SSID
const char* password = "Your_PASSWORD"; // Replace with your WiFi password
// Start WiFi in AP mode
WiFi.softAP(ssid, password);
Serial.println("Access Point started");
// Start WiFi in STA mode
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Set timezone (example: GMT+0)
configTime(0, 0, "pool.ntp.org", "time.nist.gov"); // Configure NTP server for time synchronization
}
/* END CODE */