#include <SPI.h> //for the SD card module
#include <SD.h> // for the SD card
#include <RTClib.h> // for the RTC
int inputPin = 2; // PIR PIN
int pirState = LOW; // PIR STATE
int val = 0; // INITIAL VALUE
const int chipSelect = 10;
File myFile;
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
pinMode(inputPin, INPUT);
// RTC TEST RUN
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
else {Serial.println("RTC is running!");}
// SD Card INITIALIZING
Serial.print("Initializing SD card...");
if(!SD.begin(chipSelect)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loggingPIRSensor() {
DateTime now = rtc.now();
myFile = SD.open("PIRSensor.txt", FILE_WRITE);
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
if (pirState == LOW) {
// TURN ON PIR
Serial.println("Opening File");
Serial.println("Motion detected!");
Serial.println("ALCOHOL IS DRAINING");
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.println(now.year(), DEC);
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
Serial.println("");
myFile = SD.open("PIRSensor.txt", FILE_WRITE);
if (myFile) {
myFile.print("Motion Detected!");
myFile.println("ALCOHOL IS DRAINING");
myFile.print(now.month(), DEC);
myFile.print('/');
myFile.print(now.day(), DEC);
myFile.print('/');
myFile.print(now.year(), DEC);
myFile.print(',');
myFile.print(now.hour(), DEC);
myFile.print(':');
myFile.print(now.minute(), DEC);
myFile.print(':');
myFile.print(now.second(), DEC);
myFile.print(",");
}
// UPDATE THE SENSOR
pirState = HIGH;
delay(3000);
}
} else {
if (pirState == HIGH) {
Serial.println("STANDBY");
Serial.println("Closing File\n");
pirState = LOW;
}
}
myFile.close();
}
void loop() {
loggingPIRSensor();
}