//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
// #include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <avr/delay.h>
#define pinOutput PD4
#define pinOn(port,pin) (port |= (1<<pin))
#define pinOff(port,pin) (port &= ~(1<<pin))
uint8_t stunde = 0;
uint8_t minute = 0;
uint8_t sekunde = 0;
uint8_t dauerEin = 6;
uint8_t dauerAus = 18;
uint32_t startZeit = 0;
uint32_t dauer = 960;
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void updateTimer(){
sekunde++;
if(sekunde == 60){
minute++;
sekunde = 0;
if (minute == 60){
stunde++;
minute = 0;
}
if(stunde == 24)
stunde = 0;
}
}
void updateDisplay(){
uint8_t column;
column = 1;
lcd.setCursor(column,0);
lcd.print("00:00:00");
column = 2;
if(stunde > 9){
column = 1;
}
lcd.setCursor(column,0);
lcd.print(stunde);
column = 5;
if(minute > 9){
column = 4;
}
lcd.setCursor(column,0);
lcd.print(minute);
column = 8;
if(sekunde > 9){
column = 7;
}
lcd.setCursor(column,0);
lcd.print(sekunde);
}
void initLed(uint8_t port, uint8_t pin){
uint8_t anz = 3;
for(uint8_t d=0;d<anz;d++){
pinOn(PORTD,pinOutput);
_delay_ms(500);
pinOff(PORTD,pinOutput);
_delay_ms(500);
}
}
void initLCD(){
lcd.init();
lcd.backlight();
lcd.setCursor(2,0);
lcd.print("Candle-Timer");
lcd.setCursor(0,1);
lcd.print("2024-01-02 V.01");
_delay_ms(1000);
lcd.clear();
}
void setup(){
DDRD |= (1<<pinOutput);
initLCD();
initLed(PORTD,pinOutput);
startZeit = millis();
pinOn(PORTD,pinOutput);
}
void loop(){
if(millis() - startZeit > dauer){
updateTimer();
updateDisplay();
startZeit = millis();
}
}