#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define IR_PIN 2
#define LED_PIN 3

void setup() {
  pinMode(IR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);

  // Initialize OLED
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    for (;;); // Don't proceed, loop forever if OLED not found
  }
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 20);
  display.println("Starting...");
  display.display();
  delay(2000);
}

void loop() {
  int sensorState = digitalRead(IR_PIN);

  if (sensorState == LOW) {
    // Object detected → Door closed
    digitalWrite(LED_PIN, LOW);
    display.clearDisplay();
    display.setTextSize(2);
    display.setCursor(0, 20);
    display.println("Door Closed");
    display.display();
  } else {
    // Object NOT detected → Door open
    display.clearDisplay();
    display.setTextSize(2);
    display.setCursor(0, 20);
    display.println("Door Open!");
    display.display();

    // Blink LED
    digitalWrite(LED_PIN, HIGH);
    delay(300);
    digitalWrite(LED_PIN, LOW);
    delay(300);
  }
}
