#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1 
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define PIR_SENSOR 13  // PIR sensor input pin
#define BUZZER 12       // Buzzer output pin

void setup() {
    pinMode(PIR_SENSOR, INPUT);
    pinMode(BUZZER, OUTPUT);
    Serial.begin(115200);

    if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
        Serial.println("SSD1306 allocation failed");
        while (1);
    }
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(0, 10);
    display.println("Motion Detection Ready");
    display.display();
}

void loop() {
    int motion = digitalRead(PIR_SENSOR);
    if (motion == HIGH) {
        Serial.println("Motion Detected!");
        digitalWrite(BUZZER, HIGH);
        display.clearDisplay();
        display.setCursor(0, 10);
        display.println("Motion Detected!");
        display.display();
        delay(5000);
    } else {
        digitalWrite(BUZZER, LOW);
        display.clearDisplay();
        display.setCursor(0, 10);
        display.println("No Motion");
        display.display();
    }
    delay(500);
}