#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/Picopixel.h>
#define LEDM_PIN 3
#define LEDK_PIN 4
#define LEDB_PIN 5
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int buzzerPin = 7;
float t;
Adafruit_SSD1306 display(128, 64, &Wire, -1);
void updateDisplay() {
display.clearDisplay();
display.setFont();
display.setTextColor(1);
display.setCursor(22, 2);
display.print("PENGECEKAN SUHU");
if(t < 29){
display.setCursor(32, 32);
display.print("SUHU RENDAH");
display.setTextColor(3);
//oled
}
else if(t >= 29 && t <= 35 ){
display.setCursor(32, 32);
display.print("SUHU CUKUP");
display.setTextColor(4);
//oled
}
else if(t > 35 ){
display.setCursor(32, 32);
display.print("SUHU TINGGI");
display.setTextColor(5);
//oled
}
display.display();
}
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
updateDisplay();
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
pinMode(LEDM_PIN, OUTPUT);
pinMode(LEDK_PIN, OUTPUT);
pinMode(LEDB_PIN, OUTPUT);
pinMode(buzzerPin, OUTPUT);
dht.begin();
}
void loop() {
delay(1000);
updateDisplay();
t = dht.readTemperature();
if ( isnan(t)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hic = dht.computeHeatIndex(t, false);
Serial.print(t);
if(t < 29){
digitalWrite(LEDB_PIN, HIGH);
digitalWrite(LEDM_PIN, LOW);
digitalWrite(LEDK_PIN, LOW);
noTone(buzzerPin);
Serial.println(F("°C SUHU RENDAH"));
}
else if (t >= 29 && t <= 36){
digitalWrite(LEDK_PIN, HIGH);
digitalWrite(LEDM_PIN, LOW);
digitalWrite(LEDB_PIN, LOW);
noTone(buzzerPin);
Serial.println(F("°C SUHU CUKUP"));
}
else {
digitalWrite(LEDM_PIN, HIGH);
digitalWrite(LEDK_PIN, LOW);
digitalWrite(LEDB_PIN, LOW);
Serial.println(F("°C SUHU PANAS"));
tone(buzzerPin, 150);
delay(1000);
}
}