#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inicjalizacja obiektu wyświetlacza LCD I2C
// Definicje polskich znaków w kodowaniu ISO 8859-2 (Latin-2)
byte polishChars[3][8] = {
//ż
{
B11111,
B10001,
B00010,
B11111,
B01000,
B10001,
B11111,
B00000
},
//ó
{
B00010,
B00100,
B01110,
B10001,
B10001,
B10001,
B01110,
B00000
},
//ł
{
B00100,
B00100,
B01100,
B00110,
B00100,
B00101,
B00010,
B00000
}
};
const int redLedPin = 10; // Pin dla diody czerwonej
const int yellowLedPin = 7; // Pin dla diody żółtej
const int greenLedPin = 4; // Pin dla diody zielonej
unsigned long previousMillis = 0;
const long interval = 2000; // Interwał czasowy (ms)
int state = 0; // Stan diod LED: 0 - czerwona, 1 - żółta, 2 - zielona
void setup() {
lcd.init(); // Inicjalizacja wyświetlacza LCD
lcd.backlight(); // Włączenie podświetlenia LCD
// Dodanie definicji polskich znaków do pamięci wyświetlacza
for (int i = 0; i < 3; i++) {
lcd.createChar(i, polishChars[i]);
}
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis(); // Aktualny czas
// Obsługa zmiany stanu diod LED co interwał czasowy
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
switchLED(); // Zmiana stanu diod LED
}
}
void switchLED() {
// Zmiana stanu diod LED
switch (state) {
case 0: // Czerwona dioda
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Czerwona dioda zapalona");
state = 1; // Wyłączenie diody
break;
case 1: // Czerwona dioda wylaczona
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Czerwona dioda zgaszona");
state = 2; // Przełączenie na żółtą diodę
break;
case 2: // Żółta dioda
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(byte(0)); // Wyświetlanie polskiego znaku "ż"
lcd.write(byte(1)); // Wyświetlanie polskiego znaku "ó"
lcd.write(byte(2)); // Wyświetlanie polskiego znaku "ł"
lcd.print("ta dioda zapalona");
state = 3; // Wyłączenie diody
break;
case 3: // Żółta dioda
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(byte(0)); // Wyświetlanie polskiego znaku "ż"
lcd.write(byte(1)); // Wyświetlanie polskiego znaku "ó"
lcd.write(byte(2)); // Wyświetlanie polskiego znaku "ł"
lcd.print("ta dioda zgaszona");
state = 4; // Przełączenie na zieloną diodę
break;
case 4: // Zielona dioda
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Zielona dioda zapalona");
state = 5; // Wyłączenie diody
break;
case 5: // Zielona dioda off
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Zielona dioda zgaszona");
state = 0; // Przełączenie na czerwoną diodę
break;
}
}