#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BUTTON_HOME_PIN 2
#define BUTTON_GARAGE_PIN 3
#define RED_LED_HOME_PIN 4
#define GREEN_LED_HOME_PIN 5
#define RED_LED_GARAGE_PIN 6
#define GREEN_LED_GARAGE_PIN 7
LiquidCrystal_I2C lcd(0x27, 16, 2);
bool isHomeLocked = true;
bool isGarageLocked = true;
void setup() {
pinMode(BUTTON_HOME_PIN, INPUT_PULLUP);
pinMode(BUTTON_GARAGE_PIN, INPUT_PULLUP);
pinMode(RED_LED_HOME_PIN, OUTPUT);
pinMode(GREEN_LED_HOME_PIN, OUTPUT);
pinMode(RED_LED_GARAGE_PIN, OUTPUT);
pinMode(GREEN_LED_GARAGE_PIN, OUTPUT);
lcd.init();
lcd.backlight();
updateHomeStatus();
updateGarageStatus();
}
void loop() {
if (digitalRead(BUTTON_HOME_PIN) == LOW) {
delay(200); // Debouncing delay
isHomeLocked = !isHomeLocked;
updateHomeStatus();
}
if (digitalRead(BUTTON_GARAGE_PIN) == LOW) {
delay(200); // Debouncing delay
isGarageLocked = !isGarageLocked;
updateGarageStatus();
}
}
void updateHomeStatus() {
if (isHomeLocked) {
digitalWrite(RED_LED_HOME_PIN, HIGH);
digitalWrite(GREEN_LED_HOME_PIN, LOW);
lcd.setCursor(0, 0);
lcd.print("Dom: Uzamknuty ");
} else {
digitalWrite(RED_LED_HOME_PIN, LOW);
digitalWrite(GREEN_LED_HOME_PIN, HIGH);
lcd.setCursor(0, 0);
lcd.print("Dom: Otvoreny ");
}
}
void updateGarageStatus() {
if (isGarageLocked) {
digitalWrite(RED_LED_GARAGE_PIN, HIGH);
digitalWrite(GREEN_LED_GARAGE_PIN, LOW);
lcd.setCursor(0, 1);
lcd.print("Garaz: Uzamknuta ");
} else {
digitalWrite(RED_LED_GARAGE_PIN, LOW);
digitalWrite(GREEN_LED_GARAGE_PIN, HIGH);
lcd.setCursor(0, 1);
lcd.print("Garaz: Otvorena ");
}
}