#include #include #include #include #include #include #include "config.h" // Only for ESP8266 D1 Mini #define ECHO 5 // D1 #define TRIG 16 // D0 #define POTI_IN 17 // A0, analog In WiFiClient client; MQTTPubSubClient mqtt; // Set Data pin for LED ring (we use GPIO3, which is also RX of the serial line) #define DATA_PIN 3 const uint16_t PixelCount = 8; NeoPixelBus strip(PixelCount, DATA_PIN); long duration; // here we measure the time needed by the ultrasonic pulse float distance; // the calculated distance int poti; // used to adjust the distance for yellow/red int percent=0; // will be used to calculate the current percentage of the distance reached int colorSaturation=255; // max color saturation for the colors (=brightness) // define some colors we use later RgbColor red(colorSaturation, 0, 0); RgbColor green(0, colorSaturation, 0); RgbColor yellow(colorSaturation, colorSaturation, 0); RgbColor blue(0, 0, colorSaturation); RgbColor white(colorSaturation); RgbColor black(0); void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); // Switch on the LED if an 1 was received as first character if ((char)payload[0] == '1') { digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is acive low on the ESP-01) } else { digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH } } void setup() { // Important to first initilizate Serial before the strip as // we are useing the RX PIN to connect the strip Serial.begin(115200); // Baudrate: 115200 // start your network WiFi.mode(WIFI_STA); WiFi.begin(wifi_ssid, wifi_password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // connect to host client.connect(mqtt_server, 1883); // initialize mqtt client mqtt.begin(client); // connect to mqtt broker mqtt.connect("arduino", "public", "public"); // subscribe topic and callback which is called when /hello has come mqtt.subscribe(mqtt_topic, [](const String& payload, const size_t size) { Serial.print(mqtt_topic); Serial.println(payload); }); // Setup the ultrasonic sensor PIN pinMode(TRIG, OUTPUT); // TRIG-Pin: Output pinMode(ECHO, INPUT); // ECHO-Pin: Input // this resets all the neopixels to an off state strip.Begin(); for(int i=0; i150) { setGreen(); } else if (percent >100) { setYellow(); } else {setRed(); } // Anzeige der Entfernung im seriellen Monitor Serial.println("Poti: " + String(poti)); Serial.println("Entfernung: " + String(distance) + "cm"); Serial.println("Percent: " + String(percent) + " of goal value"); delay(1000); }