Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/********* 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 Relay - Source Code NOT compiled for: ESP32 DevKit V1 - Source Code created on: 2024-08-08 05:51:15 ********* 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
//https://github.com/evert-arias/EasyButton #include
//https://github.com/rafaelnsantos/Relay #include
#include
//https://github.com/stblassitude/Adafruit_SSD1306_Wemos_OLED.git #include
// Include U8g2_for_Adafruit_GFX library #include
// Include WiFi library for WiFi functionality #include
// Include WebServer library for handling web requests /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); void handleRoot(); // Function to handle root URL void configureWiFi(); // Function to configure WiFi /***** 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 I2C PINS *****/ const uint8_t myDisplay_SSD1306OledDisplay_I2C_PIN_SDA_D21 = 21; const uint8_t myDisplay_SSD1306OledDisplay_I2C_PIN_SCL_D22 = 22; const uint8_t myDisplay_SSD1306OledDisplay_I2C_SLAVE_ADDRESS = 0x3C; // Default I2C address for SSD1306 /***** 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*****/ // Initialize EasyButton object for the push button EasyButton button(test_PushButton_PIN_D4); // Using the constructor to initialize the button // Initialize Relay object on pin 13 with a period of 5 seconds Relay relay(relay_RelayModule_Signal_PIN_D13, 5); // Using the constructor to initialize the relay // Initialize Adafruit_SSD1306 object for the OLED display #define OLED_RESET -1 // Reset pin not used Adafruit_SSD1306 display(myDisplay_SSD1306OledDisplay_I2C_SLAVE_ADDRESS, myDisplay_SSD1306OledDisplay_I2C_PIN_SDA_D21, myDisplay_SSD1306OledDisplay_I2C_PIN_SCL_D22); // Using the constructor to initialize the display // Initialize U8G2_FOR_ADAFRUIT_GFX object for font support U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx; // Using the constructor to initialize U8G2_FOR_ADAFRUIT_GFX // Initialize WebServer object WebServer server(80); // Create a web server on port 80 void setup(void) { Serial.begin(9600); // Initialize serial communication for debugging pinMode(test_PushButton_PIN_D4, INPUT_PULLUP); pinMode(relay_RelayModule_Signal_PIN_D13, OUTPUT); // Configure WiFi and start the web server configureWiFi(); server.on("/", handleRoot); // Define the root URL handler server.begin(); // Start the server // Initialize the button button.begin(); // Call begin to set up the button button.onPressed([]() { // Lambda function for button press event Serial.println("Button pressed"); }); // Set relay mode to automatic relay.setRelayMode(relayModeAutomatic); // Set the relay to automatic mode // Initialize the display display.begin(SSD1306_SWITCHCAPVCC, myDisplay_SSD1306OledDisplay_I2C_SLAVE_ADDRESS); // Initialize with I2C address display.clearDisplay(); // Clear the display buffer display.display(); // Show the display buffer on the screen // Initialize U8G2_FOR_ADAFRUIT_GFX with the display u8g2_for_adafruit_gfx.begin(display); // Connect U8G2 procedures to Adafruit GFX } void loop(void) { // put your main code here, to run repeatedly: updateOutputs(); // Refresh output data button.read(); // Continuously read the status of the button relay.loop(); // Call relay loop to manage relay timing // Handle client requests server.handleClient(); // Check for incoming client requests // Example of using U8G2_FOR_ADAFRUIT_GFX to display text display.clearDisplay(); // Clear the display u8g2_for_adafruit_gfx.setFont(u8g2_font_helvR14_tf); // Set font u8g2_for_adafruit_gfx.setCursor(0, 20); // Set cursor position u8g2_for_adafruit_gfx.print("Hello World"); // Print text u8g2_for_adafruit_gfx.setCursor(0, 40); // Set cursor position u8g2_for_adafruit_gfx.print("Umlaut ÄÖÜ"); // Print text with umlaut display.display(); // Show the display buffer delay(2000); // Delay for 2 seconds } void updateOutputs() { digitalWrite(relay_RelayModule_Signal_PIN_D13, relay_RelayModule_Signal_PIN_D13_rawData); } // Function to configure WiFi void configureWiFi() { const char* ssid = "your_SSID"; // Replace with your WiFi SSID const char* password = "your_PASSWORD"; // Replace with your WiFi password WiFi.mode(WIFI_AP_STA); // Set WiFi mode to AP and STA WiFi.softAP("ESP32_AP"); // Start an access point WiFi.begin(ssid, password); // Connect to the WiFi network // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } // Function to handle root URL void handleRoot() { server.send(200, "text/html", "
Welcome to ESP32 Web Server
Configure your settings here.
"); } /* END CODE */
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)