#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int PIR = 26;
int led2 = 14;
int led1 = 12;
int but1 = 15;
int but2 = 2;
int but3 = 0;
int res = 4;
int LDR;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(PIR, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(but1, INPUT_PULLUP);
pinMode(but2, INPUT_PULLUP);
pinMode(but3, INPUT_PULLUP);
pinMode(res, INPUT_PULLUP);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Jangan lanjutkan, loop selamanya
}
// Bersihkan buffer layar
display.clearDisplay();
// Tampilkan teks statis
display.setTextSize(1); // Ukuran teks normal 1:1 piksel
display.setTextColor(SSD1306_WHITE); // Tampilkan teks berwarna putih
display.setCursor(0, 0);
display.println("Halo Gan!");
display.setCursor(0, 15);
display.println("Monggo Pilih Salah ");
display.setCursor(0, 30);
display.println(F("Satu Mode Gan..."));
// Tampilkan buffer layar di layar OLED
display.display();
}
void ldr(){
while(true){
LDR = analogRead(27);
if (LDR>679 && digitalRead(PIR)==HIGH){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
Serial.print("LDR<1000lux");Serial.print(" == ");Serial.println("Ada Orang");
display.clearDisplay();
display.setCursor(0, 0);
display.println("Mode 1");
display.setCursor(0, 15);
display.print("LDR = ");
display.println(LDR);
display.setCursor(0, 30);
display.println("PIR = Deteksi");
display.display();
delay(1000);
}
if (LDR>679 && digitalRead(PIR)==LOW){
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
Serial.print("LDR<1000lux");Serial.print(" == ");Serial.println("Tidak ada Orang");
display.clearDisplay();
display.setCursor(0, 0);
display.println("Mode 1");
display.setCursor(0, 15);
display.print("LDR = ");
display.println(LDR);
display.setCursor(0, 30);
display.println("PIR = Tidak Deteksi");
display.display();
delay(1000);
}
if(LDR<679) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Serial.println("LDR>1000lux");
display.clearDisplay();
display.setCursor(0, 0);
display.println("Mode 1");
display.setCursor(0, 15);
display.println("LDR = >1000");
display.setCursor(0, 30);
display.println("PIR = -");
display.display();
delay(1000);
}
if(digitalRead(res)==LOW){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
break;
}
}
}
void loop() {
// put your main code here, to run repeatedly:
// this speeds up the simulation
display.clearDisplay();
display.setTextSize(1); // Ukuran teks normal 1:1 piksel
display.setTextColor(SSD1306_WHITE); // Tampilkan teks berwarna putih
display.setCursor(0, 0);
display.println("Halo Gan!");
display.setCursor(0, 15);
display.println("Monggo Pilih Salah ");
display.setCursor(0, 30);
display.println("Satu Mode Gan...");
// Tampilkan buffer layar di layar OLED
display.display();
Serial.println("Silahkan Pilih Mode!");
delay(1000);
if(digitalRead(but1)==LOW){
display.clearDisplay();
ldr();
}
}