#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <SD.h>
// Initialize the LCD library with the I2C address
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS1307 rtc;
const int button1 = 8; // Button to increment counter
const int chipSelect = 10;
int counter = 0;
File myFile;
void setup() {
// Initialize the LCD
lcd.begin(20, 4);
lcd.backlight();
// Initialize the RTC
if (!rtc.begin()) {
lcd.print("Couldn't find RTC");
while (1);
}
if (!rtc.isrunning()) {
lcd.print("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Initialize the SD card
if (!SD.begin(chipSelect)) {
lcd.print("SD init failed!");
while (1);
}
// Set button pin as input
pinMode(button1, INPUT_PULLUP);
// Print initial message
lcd.setCursor(0, 0);
lcd.print("Pokreni uredjaj");
}
void loop() {
// Check if button 1 is pressed
if (digitalRead(button1) == LOW) {
counter++;
DateTime now = rtc.now();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Count: ");
lcd.print(counter);
lcd.setCursor(0, 1);
lcd.print(now.timestamp(DateTime::TIMESTAMP_DATE));
lcd.setCursor(0, 2);
lcd.print(now.timestamp(DateTime::TIMESTAMP_TIME));
delay(500); // Debounce delay
// Save to SD card
myFile = SD.open("count.txt", FILE_WRITE);
if (myFile) {
myFile.print("Count: ");
myFile.print(counter);
myFile.print(" Date: ");
myFile.print(now.timestamp(DateTime::TIMESTAMP_DATE));
myFile.print(" Time: ");
myFile.println(now.timestamp(DateTime::TIMESTAMP_TIME));
myFile.close();
} else {
lcd.clear();
lcd.print("Error opening file");
}
}
}