/********* 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 Potentiometer - Source Code NOT compiled for: ESP32 DevKit V1 - Source Code created on: 2024-09-14 19:52:47 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* Connect the ESP32 Dev board to an Home Assistant */ /* MQTT Broker. The Broker need a username and */ /* Password for authentifikation. Add the Adafruit */ /* DS3502 I2C Digital Pot Makte the Potentiometer */ /* available for the MQTT Server to control it from */ /* Home Assitant */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include // https://github.com/adafruit/Adafruit_DS3502 #include // Library for WiFi connectivity #include // Library for MQTT functionality #include // Library for MQTT client /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); /***** DEFINITION OF ANALOG INPUT PINS *****/ const uint8_t Potentiometer_Potentiometer_Vout_PIN_D4 = D4; /***** DEFINITION OF LIBRARIES CLASS INSTANCES *****/ Adafruit_DS3502 ds3502; // Create an instance of the Adafruit_DS3502 class // WiFi and MQTT configuration const char* ssid = "your_SSID"; // Replace with your WiFi SSID const char* password = "your_PASSWORD"; // Replace with your WiFi Password const char* mqtt_server = "your_MQTT_BROKER"; // Replace with your MQTT Broker address const char* mqtt_user = "your_MQTT_USERNAME"; // Replace with your MQTT username const char* mqtt_password = "your_MQTT_PASSWORD"; // Replace with your MQTT password WiFiClient client; // Create a WiFi client Adafruit_MQTT_Client mqtt(&client, mqtt_server, 1883, mqtt_user, mqtt_password); // Create an MQTT client // Define the MQTT topic for controlling the wiper Adafruit_MQTT_Publish wiperControl = Adafruit_MQTT_Publish(&mqtt, "home/assistant/wiper"); // Topic for wiper control void setup(void) { // Initialize serial communication at 115200 baud rate Serial.begin(115200); // Wait until the serial port is opened while (!Serial) { delay(1); } // Set the analog pin mode for reading the potentiometer voltage pinMode(Potentiometer_Potentiometer_Vout_PIN_D4, INPUT); // Initialize the DS3502 potentiometer if (!ds3502.begin()) { Serial.println("Couldn't find DS3502 chip"); while (1); // Halt execution if the chip is not found } Serial.println("Found DS3502 chip"); // Connect to WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to WiFi"); } void loop(void) { // Ensure the MQTT client is connected if (mqtt.connected()) { mqtt.processPackets(10000); // Process incoming packets } else { // Reconnect to the MQTT broker if (mqtt.connect()) { Serial.println("Connected to MQTT Broker"); } else { Serial.print("Failed to connect to MQTT Broker, state: "); Serial.println(mqtt.connectError()); delay(2000); // Wait before retrying } } // Example of setting wiper values and reading the output voltage for (uint8_t wiper_value : {0, 63, 127}) { ds3502.setWiper(wiper_value); // Set the wiper to the specified value float voltage = analogRead(Potentiometer_Potentiometer_Vout_PIN_D4) * (5.0 / 1024); // Read voltage from the potentiometer Serial.print("Wiper voltage with wiper set to "); Serial.print(wiper_value); Serial.print(": "); Serial.print(voltage); Serial.println(" V"); // Publish the wiper value to the MQTT topic wiperControl.publish(wiper_value); delay(1000); // Wait for a second before the next iteration } } /* END CODE */