/* PIN OUT
* DHT = GPIO13 = 13
* LED DHT = GPIO12 = 12
* PIR = GPIO25 = 25
* LED PIR = GPIO33 = 33
*/
/* OLED DISPLAY */
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// inisialisasi OLED P x L
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
/*SENSOR DHT11 */
#include <DHT.h>
#define DHTPIN 13 // Pin yang digunakan untuk menghubungkan sensor DHT11
#define DHTTYPE DHT22 // Tipe sensor (DHT11 atau DHT22, sesuaikan)
/*SENSOR DHT11 */
DHT dht22(DHTPIN, DHTTYPE);
/*SENSOR PIR */
const int pirPin = 25;
/* led */
const int LED_DHT = 12;
const int LED_PIR = 33;
void setup() {
Serial.begin(9600);
// SENSOR DHT11
dht22.begin();
// SENSOR PIR
pinMode(pirPin, INPUT);
// LED OUTPUT
pinMode(LED_DHT, OUTPUT);
pinMode(LED_PIR, OUTPUT);
// OLED DISPLAY
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); }
delay(500);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
}
void loop() {
/*SENSOR DHT11 */
int suhu = dht22.readTemperature(); // Membaca suhu dalam derajat Celsius
if (suhu >= 30) {
digitalWrite(LED_DHT, HIGH); // LED menyala jika suhu lebih dari atau sama dengan 30 derajat Celsius
} else {
digitalWrite(LED_DHT, LOW); // LED mati jika suhu kurang dari 30 derajat Celsius
}
/* SENSOR PIR */
int motion = digitalRead(pirPin);
if (motion == HIGH) {
digitalWrite(LED_PIR, HIGH);
// Di sini Anda dapat menambahkan tindakan yang ingin Anda jalankan ketika gerakan terdeteksi.
} else {
digitalWrite(LED_PIR, LOW);
// Di sini Anda dapat menambahkan tindakan yang ingin Anda jalankan ketika tidak ada gerakan.
}
}