#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHTesp.h"
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{ // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;)
;
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.println("GreenTRUST");
display.setTextSize(1);
display.println();
display.println("by");display.println();
display.println("AdaLovelace Team");
display.display();
delay(2000);
display.display();
}
void tampilan(int volume, float berat, float suhu, int kelembapan){
display.clearDisplay();
display.cp437(true);
display.setTextSize(1);
display.setCursor(0,0);
display.print("VOLUME");
display.setTextSize(2);
display.setCursor(0,10);
display.print(volume); display.print("%");
display.setTextSize(1);
display.setCursor(68,0);
display.print("BERAT (kg)");
display.setTextSize(2);
display.setCursor(68,10);
display.print(berat);
display.setTextSize(1);
display.setCursor(0,57);
display.print("SUHU:");display.print(suhu);display.write(0xf8);display.print("C");
display.print(" KLMB:");display.print(kelembapan);display.print("%");
// Grafik volume
display.fillRect(1,32,(int)(((float)volume/100) * 55),12,WHITE);
display.drawRect(0,31,56,13,WHITE);
// Grafik berat
display.fillRect(69,32,(int)((berat/20) * 55),12,WHITE);
display.drawRect(68,31,56,13,WHITE);
// Garis kompartemen
display.drawFastHLine(0,52,128,WHITE);
display.drawFastVLine(63,0,52,WHITE);
display.display();
}
void loop() {
// put your main code here, to run repeatedly:
int volume = random(0,100);
float berat = random(0,20);
// float suhu = random(10,100);
// int kelembapan = random(0,99);
TempAndHumidity dataDHT = dhtSensor.getTempAndHumidity();
tampilan(volume,berat,dataDHT.temperature,dataDHT.humidity);
delay(2000);
}