#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BUTTON_DECREASE_PIN 2 // Tlačidlo pre zníženie počtu miest
#define BUTTON_INCREASE_PIN 3 // Tlačidlo pre zvýšenie počtu miest
#define LED_PIN 4 // Dióda indikujúca stlačené tlačidlo
LiquidCrystal_I2C lcd(0x27, 16, 2);
int parkingSpaces = 10; // Pôvodná hodnota počtu miest
const int maxSpaces = 10; // Maximálny počet parkovacích miest
const int minSpaces = 0; // Minimálny počet parkovacích miest
bool buttonDecreaseState = false;
bool buttonIncreaseState = false;
void setup() {
pinMode(BUTTON_DECREASE_PIN, INPUT_PULLUP);
pinMode(BUTTON_INCREASE_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
lcd.init();
lcd.backlight();
Serial.begin(9600);
updateDisplay();
}
void loop() {
// Kontrola stlačenia tlačidla pre zníženie
if (digitalRead(BUTTON_DECREASE_PIN) == LOW && !buttonDecreaseState) {
buttonDecreaseState = true;
if (parkingSpaces > minSpaces) {
parkingSpaces--;
updateDisplay();
}
}
if (digitalRead(BUTTON_DECREASE_PIN) == HIGH && buttonDecreaseState) {
buttonDecreaseState = false;
}
// Kontrola stlačenia tlačidla pre zvýšenie
if (digitalRead(BUTTON_INCREASE_PIN) == LOW && !buttonIncreaseState) {
buttonIncreaseState = true;
if (parkingSpaces < maxSpaces) {
parkingSpaces++;
updateDisplay();
}
}
if (digitalRead(BUTTON_INCREASE_PIN) == HIGH && buttonIncreaseState) {
buttonIncreaseState = false;
}
// Indikácia diódy
if (digitalRead(BUTTON_DECREASE_PIN) == LOW || digitalRead(BUTTON_INCREASE_PIN) == LOW) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
void updateDisplay() {
lcd.clear();
if (parkingSpaces == 0) {
lcd.print("Parkovisko plne");
} else {
lcd.print("Volne miesta: ");
lcd.print(parkingSpaces);
}
Serial.print("Pocet volnych miest: ");
Serial.println(parkingSpaces);
}