#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;
}
}
}