diff --git a/platformio.ini b/platformio.ini index e1aa506..3691a4c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -21,6 +21,7 @@ lib_deps = paulstoffregen/XPT2046_Touchscreen @ 0.0.0-alpha+sha.26b691b2c8 adafruit/Adafruit Unified Sensor @ 1.1.14 #adafruit/Adafruit HTU21DF Library @ 1.0.5 + milesburton/DallasTemperature @ 3.11.0 build_flags = ${env.build_flags} -DKorrekturTemperatur=0.0 diff --git a/src/main.cpp b/src/main.cpp index 365a884..eee8748 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -41,6 +41,18 @@ int d = 0; void analogMeter(); void plotNeedle(int value, byte ms_delay); +#include +#include + +// Data wire is plugged into port 2 on the Arduino +#define ONE_WIRE_BUS 22 + +// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) +OneWire oneWire(ONE_WIRE_BUS); + +// Pass our oneWire reference to Dallas Temperature. +DallasTemperature sensors(&oneWire); + void setup(void) { tft.init(); tft.setRotation(1); @@ -50,25 +62,48 @@ void setup(void) { //I2C_2.begin(SDA_2, SCL_2, I2C_FREQ); //delay(9000); + sensors.requestTemperatures(); // Send the command to get temperatures + Serial.println("DONE"); + + Serial.print("Temperature for the device 1 (index 0) is: "); + Serial.println(sensors.getTempCByIndex(0)); + + //delay(10000); + analogMeter(); // Draw analogue meter updateTime = millis(); // Next update time pinMode(ledGreen, OUTPUT); analogWrite(ledGreen, 102); //init_HTU21(); - delay(5000); + //delay(5000); } void loop() { + float Temperatur; if (updateTime <= millis()) { - updateTime = millis() + 35; // Update meter every 35 milliseconds + updateTime = millis() + 5000; // Update meter every 35 milliseconds // Create a Sine wave for testing d += 4; if (d >= 360) d = 0; value[0] = 50 + 50 * sin((d + 0) * 0.0174532925); - + sensors.requestTemperatures(); // Send the command to get temperatures + Temperatur = sensors.getTempCByIndex(0); plotNeedle(value[0], 0); // It takes between 2 and 12ms to replot the needle with zero delay + tft.fillRect(0, 179, 310, 60, TFT_GREEN); + tft.setTextColor(TFT_BLACK,TFT_GREEN); + if (!Temperatur <= 127.000){ + tft.drawString("Temperatur: ", 1, 180, 4); + tft.drawFloat(Temperatur, 1.2,160, 180,4); + tft.drawString("o", 212, 180, 1); + tft.drawString("C", 220, 180, 4); + tft.drawString("Raumfeuchtigkeit:", 1, 210, 4); + char buf[8]; dtostrf(value[0], 3, 0, buf); + tft.drawString(buf, 230, 210, 4); + tft.drawString("%", 270, 210, 4); + } + Serial.print(Temperatur,4); Serial.println(" °C"); } }