#include "segmentos.h"
#include "DHT.h"
#define PINDHT 13
#define DHTTYPE DHT22
DHT dht(PINDHT, DHTTYPE);
int segment[] = {2, 3, 4, 5, 6, 7, 8};
uint8_t sss[] = {6, 7, 8, 9, 10, 11, 12};
SiteSegment segments(sss);
int stateRN = 1;
int startH = 12;
int startM = 12;
const long interval = 10000;
unsigned long prevMill = 0;
const long intervalSw = 10000;
const long displayInterval = 10000;
unsigned long swMill = 0;
void intToTime(int timeI, int& hours, int& minutes) {
hours = timeI / 100;
minutes = timeI % 100;
}
String SetNumber(int timeI) {
int hours, minutes;
intToTime(timeI, hours, minutes);
char buff[5];
sprintf(buff, "%02d%02d", hours, minutes);
return String(buff);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
dht.begin();
segments.init();
for (int i : segment) {
pinMode(i, OUTPUT);
digitalWrite(i, 1);
}
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long currentMillis = millis();
if (currentMillis - swMill >= intervalSw) {
swMill = currentMillis;
stateRN = (stateRN == 1) ? 2 : 1;
}
if (stateRN == 1) {
int timeI = startH * 100 + startM;
String num = SetNumber(timeI);
for (int i = 2; i < 6; i++) {
segments.ShowNum(num[i - 2] - '0');
digitalWrite(i, 0);
digitalWrite(i, 1);
}
}
else if (stateRN == 2) {
unsigned long displayMillis = millis();
while (millis() - displayMillis <= displayInterval) {
float temperature = dht.readTemperature();
if (!isnan(temperature)) {
int tempInt = (int)temperature;
String tempStr = String(tempInt);
for (int i = 0; i < 4; i++) {
segments.ShowNum(tempStr[i] - '0');
digitalWrite(segment[i], 0);
digitalWrite(segment[i], 1);
}
} else {
Serial.println("Tempeature failed :(");
}
}
}
}