62 lines
1.8 KiB
C++
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>");
|
|
} |