#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long previousTime = 0;
const long interval = 1000;
int godziny = 0;//saat
int minuty = 0;//dakika
int sekundy = 0;//saniye
bool czyDziala = false;
void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
Serial.println("Seçenekleri seçin:");
Serial.println("1-Sayma süresini 00:00:00'dan itibaren başlatın.");
Serial.println("2-Geçerli saati girin:");
Serial.println("3-Reset");
}
void loop()
{
if (Serial.available())
{
char opcja = Serial.read();
if (opcja == '1')
{
czyDziala = true;
}
else if (opcja == '2')
{
ustawCzas();
czyDziala = true;
}
else if (opcja == '3')
{
resetuj();
lcd.clear();
lcd.setCursor(0, 0);
Serial.println("Seçenekleri seçin:");
Serial.println("1-Sayma süresini 00:00:00'dan itibaren başlatın.");
Serial.println("2-Geçerli saati girin:");
Serial.println("3-Reset");
}
}
if (czyDziala)
{
if (millis() - previousTime >= interval)
{
previousTime = millis();
zwiekszCzas();
wyswietl();
}
}
}
void zwiekszCzas()
{
sekundy++;
if (sekundy >= 60)
{
minuty++;
sekundy = 0;
}
if (minuty >= 60)
{
godziny++;
minuty = 0;
}
if (godziny >= 24)
{
godziny = 0;
}
}
void wyswietl()
{
lcd.clear();
lcd.setCursor(0, 0);
if (godziny < 10)
lcd.print('0');
lcd.print(godziny);
lcd.print(":");
if (minuty < 10)
lcd.print('0');
lcd.print(minuty);
lcd.print(":");
if (sekundy < 10)
lcd.print('0');
lcd.print(sekundy);
}
void ustawCzas()
{
Serial.println("Saat Dilimini Geçerli Bir Formatta Yazın Saat:Dakika:Saniye");
while (Serial.available() < 8){}
godziny = Serial.parseInt();
Serial.read();
minuty = Serial.parseInt();
Serial.read();
sekundy = Serial.parseInt();
if (godziny < 0 || godziny >= 24 || minuty < 0 || minuty >= 60 || sekundy < 0 || sekundy >= 60)
{
Serial.println("Geçersiz zaman. Tekrar deneyin.");
godziny = 0;
minuty = 0;
sekundy = 0;
}
}
void resetuj()
{
czyDziala = false;
godziny = 0;
minuty = 0;
sekundy = 0;
wyswietl();
}