#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <Servo.h>
#define TFT_CS 10
#define TFT_RST 9
#define TFT_DC 8
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
Servo myServo;
const int pirPin = 2; // Pin untuk PIR sensor
const int buzzerPin = 3; // Pin untuk buzzer
const int joystickX = A0; // Pin untuk X-axis dari joystick
const int joystickY = A1; // Pin untuk Y-axis dari joystick
int pirState = LOW; // Status PIR
void setup() {
myServo.attach(4); // Menghubungkan servo ke pin 4
pinMode(pirPin, INPUT); // Mengatur pirPin sebagai input
pinMode(buzzerPin, OUTPUT); // Mengatur buzzerPin sebagai output
Serial.begin(9600); // Memulai komunikasi serial
tft.begin(); // Inisialisasi TFT
tft.setRotation(3); // Orientasi layar
tft.fillScreen(ILI9341_BLACK); // Bersihkan layar
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
}
void loop() {
// Membaca nilai dari PIR
int val = digitalRead(pirPin);
// Membaca nilai dari joystick
int xValue = analogRead(joystickX); // Baca nilai X-axis
int yValue = analogRead(joystickY); // Baca nilai Y-axis
int servoAngle = map(xValue, 0, 1023, 0, 180);
myServo.write(servoAngle); // Set sudut servo berdasarkan joystick
if (val == HIGH) { // Jika mendeteksi gerakan
Serial.println("Gerakan terdeteksi!");
tft.fillScreen(ILI9341_RED); // Ganti layar menjadi merah
tft.setCursor(10, 10);
tft.println("ALERT: Gerakan Terdeteksi!");
digitalWrite(buzzerPin, HIGH); // Nyalakan buzzer
delay(1000); // Buzzer bunyi selama 1 detik
digitalWrite(buzzerPin, LOW); // Matikan buzzer
delay(1000); // Delay sebelum pembacaan berikutnya
} else {
tft.fillScreen(ILI9341_BLACK); // Bersihkan layar
tft.setCursor(10, 10);
tft.println("Tidak ada gerakan.");
pirState = LOW; // Mengubah status menjadi LOW
}
delay(100); // Menunggu sejenak sebelum membaca lagi
}