/*tombol akan normal respon bila ditekan lama sd on / off sesuai delay void loop
bila di klik cepat tdk akan respon, supaya respon cepat karena tdk ada state nya
harus menggunakan lib AceButton */
#include "DHT.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels
#define DHT22Pin 26
DHT dht(DHT22Pin, DHT22);
bool button1, statusbut = 0;
float temp;
float hum;
int ldr;
// create an OLED display object connected to I2C
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
pinMode(25, INPUT); //LDR
pinMode(DHT22Pin, INPUT); //DHT22
pinMode(27, INPUT_PULLUP); //Button
Serial.begin(9600);
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
delay(2000); // wait two seconds for initializing
}
void loop() {
hum = dht.readHumidity();
temp = dht.readTemperature();
ldr = analogRead(25);
button1 = digitalRead(27);
if (button1 == 0){
if (statusbut == 0){
statusbut = 1;
}else {
statusbut = 0;
}
}
Serial.print("button ");
Serial.println(statusbut);
Serial.print("Temp ");
Serial.print(temp);
Serial.print(" C, ");
Serial.print("Humi ");
Serial.println(hum);
Serial.print("LDR ");
Serial.println(ldr);
display_oled(); //void
delay(500);
}
void display_oled(){
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 0);
oled.println("DHT LDR BUTTON LCD");
if (statusbut == 0){
oled.setCursor(0, 16);
oled.println("Button : ");
oled.setCursor(0, 24);
oled.println("Temp C : ");
oled.setCursor(0, 32);
oled.println("Humi % : ");
oled.setCursor(48, 16);
oled.println("DHT");
oled.setCursor(48, 24);
oled.print(temp,1);
oled.setCursor(48, 32);
oled.println(hum,1);
}else {
oled.setCursor(0, 16);
oled.println("Button : ");
oled.setCursor(0, 24);
oled.println("LDR : ");
oled.setCursor(48, 16);
oled.println("LDR");
oled.setCursor(48,24);
oled.print(ldr);
}
oled.display();
}