Files
PlatformIO_SHT40_Example/src/main.cpp
T

62 lines
1.8 KiB
C++

#include <Arduino.h>
#include <Adafruit_SHT4x.h>
Adafruit_SHT4x sht4 = Adafruit_SHT4x();
uint32_t timestamp = millis();
void sendReadingXML(uint32_t timestamp, float temperature, float humidity, const char *id);
void setup()
{
Serial.begin(115200); // zacni seriovou komunikaci s baudrate 9600
Serial.println("UART OK");
pinMode(LED_BUILTIN, OUTPUT); // nastav ledku na desce jako vystup
Serial.println("Adafruit SHT4x test"); // zadni komunikaci s SHT40 po I2C
if (!sht4.begin())
{
Serial.println("Couldn't find SHT4x"); // pokud neni sensor nalezen, program skonci v nekonecne smycce
while (1)
delay(1);
}
Serial.println("Found SHT4x sensor");
Serial.print("Serial number 0x");
Serial.println(sht4.readSerial(), HEX);
sht4.setPrecision(SHT4X_HIGH_PRECISION);
sht4.setHeater(SHT4X_NO_HEATER);
}
void loop()
{
sensors_event_t humidity, temp;
sht4.getEvent(&humidity, &temp); // cteni ze senzoru
timestamp = millis(); // pocet milisekund od spusteni procesoru
sendReadingXML(timestamp, temp.temperature, humidity.relative_humidity, "SHT40");
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(250); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(250); // wait for a second
}
void sendReadingXML(uint32_t timestamp, float temperature, float humidity, const char *id)
{
Serial.print("<reading time=\"");
Serial.print(timestamp);
Serial.print("\" id=\"");
Serial.print(id);
Serial.println("\">");
Serial.print(" <temp unit=\"C\">");
Serial.print(temperature, 2);
Serial.println("</temp>");
Serial.print(" <humidity unit=\"%\">");
Serial.print(humidity, 2);
Serial.println("</humidity>");
Serial.println("</reading>");
}