#include <LiquidCrystal_I2C.h> // dyrektywa 
//dyrektywy preprocesora dotyczace wyswietlacza
#define LCD_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_ROWS 4
// diodki z przypisanymi numerami PWM
int r = 11;
int y = 12;
int g = 13;
// tworzneie obiektu z parametrami
LiquidCrystal_I2C lcd(LCD_ADDR, LCD_COLUMNS, LCD_ROWS);
// Interwal
unsigned long previousMillis = 0;
const long interval = 2000; // Interwał czasowy w milisekundach (2 sekundy)

int state = 0; // Zmienna przechowująca stan LED
// funkcja rozmieszczenia ( wyswietlacz i piny diod)
void setup() {
  lcd.begin(20, 4);
  lcd.init();
  lcd.backlight();

  pinMode(r, OUTPUT);
  pinMode(y, OUTPUT);
  pinMode(g, OUTPUT);
}
// funkcja typu petla
void loop() {
  unsigned long currentMillis = millis(); // Aktualny czas w milisekundach

  if (currentMillis - previousMillis >= interval) {
    // Zapisz czas ostatniego uruchomienia funkcji
    previousMillis = currentMillis;
    
    lcd.clear(); // czyszczenie wyswietlacza

    // Wykonaj działania po upływie interwału czasowego
    switch (state) {
      case 0:
        //zapalanie diod
        digitalWrite(r, HIGH);
        digitalWrite(y, LOW);
        digitalWrite(g, LOW);
        // ustawianie kursora napisaow
        lcd.setCursor(0, 0);
        lcd.print("RED     LED  ON");
        lcd.setCursor(0, 1);
        lcd.print("YELLOW  LED  OFF");
        lcd.setCursor(0, 2);
        lcd.print("GREEN   LED  OFF");
        state = 1; // Przejdź do następnego stanu
        break;
      case 1:
        //zapalanie diod
        digitalWrite(r, LOW);
        digitalWrite(y, HIGH);
        digitalWrite(g, LOW);
        //// ustawianie kursora napisaow
        lcd.setCursor(2, 0);
        lcd.print("RED     LED  OFF");
        lcd.setCursor(2, 1);
        lcd.print("YELLOW  LED  ON");
        lcd.setCursor(2, 2);
        lcd.print("GREEN   LED  OFF");
        state = 2; // Przejdź do następnego stanu
        break;
      case 2:
        //zapalanie diod
        digitalWrite(r, LOW);
        digitalWrite(y, LOW);
        digitalWrite(g, HIGH);
        // ustawianie kursora napisaow
        lcd.setCursor(4, 0);
        lcd.print("RED     LED  OFF");
        lcd.setCursor(4, 1);
        lcd.print("YELLOW  LED  OFF");
        lcd.setCursor(4, 2);
        lcd.print("GREEN   LED  ON");
        state = 0; // Przejdź do pierwszego stanu
        break;
    }
  }

}
$abcdeabcde151015202530fghijfghij