Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********* 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 <Wire.h>
- #include <EasyButton.h> //https://github.com/evert-arias/EasyButton
- #include <Relay.h> //https://github.com/rafaelnsantos/Relay
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h> //https://github.com/stblassitude/Adafruit_SSD1306_Wemos_OLED.git
- #include <U8g2_for_Adafruit_GFX.h> // Include U8g2_for_Adafruit_GFX library
- #include <WiFi.h> // Include WiFi library for WiFi functionality
- #include <WebServer.h> // 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", "<h1>Welcome to ESP32 Web Server</h1><p>Configure your settings here.</p>");
- }
- /* END CODE */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement