#include "Segment.h"
#include "DHT.h"
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int segment[] = {2, 3, 4, 5};
uint8_t arrs[] = {6, 7, 8, 9, 10, 11, 12};
SiteSegment seg1(arrs);
int startHours = 15;
int startMinutes = 59;
unsigned long previousMillis = 0;
const long interval = 30000; // Interval v milisekundách (30 sekund)
int currentState = 1; // Počáteční stav je case 1
unsigned long switchMillis = 0; // Proměnná pro udržení času posledního přepínání stavu
const long switchInterval = 30000; // Interval v milisekundách (30 sekund) pro přepínání stavu
const long tempDisplayInterval = 5000; // Interval v milisekundách (5 sekund) pro zobrazení teploty
void intToTime(int timeInt, int& hours, int& minutes) {
hours = timeInt / 100;
minutes = timeInt % 100;
}
String SetNumber(int timeInt) {
int hours, minutes;
intToTime(timeInt, hours, minutes);
char buffer[5];
sprintf(buffer, "%02d%02d", hours, minutes);
return String(buffer);
}
void setup() {
Serial.begin(9600);
dht.begin();
seg1.init();
for (int i : segment) {
pinMode(i, OUTPUT);
digitalWrite(i, 1);
}
}
void loop() {
unsigned long currentMillis = millis();
// Přepínání mezi case 1 (zobrazování hodin) a case 2 (zobrazování teploty)
if (currentMillis - switchMillis >= switchInterval) {
switchMillis = currentMillis;
currentState = (currentState == 1) ? 2 : 1;
}
// Zobrazení hodin na 7-segmentovém displeji (case 1)
if (currentState == 1) {
int timeInt = startHours * 100 + startMinutes;
String num = SetNumber(timeInt);
for (int i = 2; i < 6; i++) {
seg1.ShowNum(num[i - 2] - '0');
digitalWrite(i, 0);
digitalWrite(i, 1);
}
}
// Zobrazení teploty na 7-segmentovém displeji (case 2)
else if (currentState == 2) {
unsigned long tempDisplayMillis = millis();
while (millis() - tempDisplayMillis <= tempDisplayInterval) {
float temperature = dht.readTemperature();
if (!isnan(temperature)) {
int tempInt = (int)temperature;
String tempStr = String(tempInt);
for (int i = 0; i < 4; i++) {
seg1.ShowNum(tempStr[i] - '0');
digitalWrite(segment[i], 0);
digitalWrite(segment[i], 1);
}
} else {
Serial.println("Failed to read temperature from DHT sensor!");
}
}
}
}