#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Nastavenie LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C adresa 0x27, 16 stĺpcov, 2 riadky
// Piny
#define TRIG_PIN 5
#define ECHO_PIN 18
#define BUTTON_PIN 15 // Tlačidlo namiesto reed switch
#define PIR_PIN 4
#define GREEN_LED 2
#define RED_LED 19
#define BUZZER_PIN 13
void setup() {
// Inicializácia LCD
lcd.begin(16, 2); // Nastavenie 16 stĺpcov, 2 riadky
lcd.backlight(); // Zapnutie podsvietenia
// Inicializácia pinov
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP); // Aktivujeme interný pull-up rezistor
pinMode(PIR_PIN, INPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
// Úvodná správa
lcd.setCursor(0, 0);
lcd.print("Schranka OK");
lcd.setCursor(0, 1);
lcd.print("Bez posty");
}
void loop() {
// Kontrola ultrazvukového senzora
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
// Kontrola tlačidla
bool isOpen = digitalRead(BUTTON_PIN) == LOW; // Tlačidlo stlačené = veko otvorené
// Kontrola PIR senzora
bool isMotion = digitalRead(PIR_PIN) == HIGH;
// Aktualizácia LED a buzzer
if (distance < 10) { // Pošta detekovaná
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
lcd.setCursor(0, 0);
lcd.print("Nova posta! ");
lcd.setCursor(0, 1);
lcd.print("Skontrolujte! ");
tone(BUZZER_PIN, 1000, 200);
} else if (isOpen) { // Schránka otvorená (tlačidlo stlačené)
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, HIGH);
lcd.setCursor(0, 0);
lcd.print("Schranka otvorena");
lcd.setCursor(0, 1);
lcd.print("Stav: kontrola ");
} else if (isMotion) { // Pohyb detekovaný
lcd.setCursor(0, 0);
lcd.print("Neopravneny vstup");
lcd.setCursor(0, 1);
lcd.print("Alarm! ");
digitalWrite(RED_LED, HIGH);
tone(BUZZER_PIN, 2000, 500);
} else { // Bez pošty
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
lcd.setCursor(0, 0);
lcd.print("Schranka OK ");
lcd.setCursor(0, 1);
lcd.print("Bez posty ");
}
delay(500);
}