CCCPaste

WiFi Button rev_92

/********* 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 */