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 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 <Adafruit_DS3502.h> // https://github.com/adafruit/Adafruit_DS3502
- #include <WiFi.h> // Library for WiFi connectivity
- #include <Adafruit_MQTT.h> // Library for MQTT functionality
- #include <Adafruit_MQTT_Client.h> // 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 */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement