#include <DHT.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN 2 // Pin data DHT11 terhubung ke pin 2
#define DHTTYPE DHT11 // Tipe sensor DHT (DHT11)
DHT dht(DHTPIN, DHTTYPE);
#define LIGHT_SENSOR_PIN A1
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Reset pin tidak terhubung
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define LIGHT_SENSOR_PIN A1
const int buttonPin1 = 10; // Pin untuk tombol 1
const int buttonPin2 = 9; // Pin untuk tombol 2
const int buttonPin3 = 8; // Pin untuk tombol 3
const int ledPin1 = 13; // Pin untuk lampu 1
const int ledPin2 = 12; // Pin untuk lampu 2
const int ledPin3 = 11; // Pin untuk lampu 3
void setup() {
{
Serial.begin(9600);
float h = dht.readHumidity(); // Baca kelembaban
float t = dht.readTemperature(); // Baca suhu dalam Celsius
// Periksa apakah pembacaan sukses
if (isnan(h) || isnan(t)) {
Serial.println(F("Gagal membaca dari sensor DHT"));
return;
}
display.display();
delay(2000);
display.clearDisplay();
dht.begin();
}
{
pinMode(buttonPin1, INPUT_PULLUP); // Mengatur pin tombol sebagai input dengan resistor pull-up
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
pinMode(ledPin1, OUTPUT); // Mengatur pin lampu sebagai output
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
}
void loop() {
// Membaca status tombol
{
delay(2000); // Tunggu 2 detik antara pembacaan
float h = dht.readHumidity(); // Baca kelembaban
float t = dht.readTemperature(); // Baca suhu dalam Celsius
// Periksa apakah pembacaan sukses
if (isnan(h) || isnan(t)) {
Serial.println(F("Gagal membaca dari sensor DHT"));
return;
}
// Bersihkan layar
display.clearDisplay();
// Tampilkan hasil pembacaan di layar OLED
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("Sensor DHT11"));
display.setTextSize(2);
display.setCursor(0,10);
display.print(F("Humidity: "));
display.print(h);
display.println(F("%"));
display.setCursor(0,30);
display.print(F("Temperature: "));
display.print(t);
display.println(F("°C"));
display.display();
// Tampilkan hasil pembacaan di Serial Monitor
Serial.print(F("Kelembaban: "));
Serial.print(h);
Serial.print(F("%\t"));
Serial.print(F("Suhu: "));
Serial.print(t);
Serial.println(F("°C"));
}
{
int buttonState1 = digitalRead(buttonPin1);
int buttonState2 = digitalRead(buttonPin2);
int buttonState3 = digitalRead(buttonPin3);
// Menyalakan atau mematikan lampu 1 sesuai dengan status tombol 1
if (buttonState1 == LOW) {
digitalWrite(ledPin1, HIGH); // Menyalakan lampu 1
} else {
digitalWrite(ledPin1, LOW); // Mematikan lampu 1
}
// Menyalakan atau mematikan lampu 2 sesuai dengan status tombol 2
if (buttonState2 == LOW) {
digitalWrite(ledPin2, HIGH); // Menyalakan lampu 2
} else {
digitalWrite(ledPin2, LOW); // Mematikan lampu 2
}
if (buttonState3 == LOW) {
digitalWrite(ledPin3, HIGH); // Menyalakan lampu 3
} else {
digitalWrite(ledPin3, LOW); // Mematikan lampu 3
}
// LDR
// reads the input on analog pin (value between 0 and 4095)
int analogValue = analogRead(LIGHT_SENSOR_PIN);
Serial.print("Analog Value = ");
Serial.print(analogValue); // the raw analog reading
// We'll have a few threshholds, qualitatively determined
if (analogValue < 40) {
Serial.println(" => Dark");
} else if (analogValue < 800) {
Serial.println(" => Dim");
} else if (analogValue < 2000) {
Serial.println(" => Light");
} else if (analogValue < 3200) {
Serial.println(" => Bright");
} else {
Serial.println(" => Very bright");
}
delay(500);
}
}