#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64 

#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define LED_PIN_1 21
#define LED_PIN_2 47
#define LED_PIN_3 48
#define LED_PIN_4 45

#define SENSOR_PIN 7

OneWire oneWire(SENSOR_PIN);
DallasTemperature sensor(&oneWire);

void setup() {
  pinMode(LED_PIN_1, OUTPUT);
  pinMode(LED_PIN_2, OUTPUT);
  pinMode(LED_PIN_3, OUTPUT);
  pinMode(LED_PIN_4, OUTPUT);

  Serial.begin(9600);
  Serial.println("Initializing...");

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.display();

  sensor.begin();
  delay(1000);
}

void loop() {
  sensor.requestTemperatures();
  float temperatureC = sensor.getTempCByIndex(0);
  Serial.print("Temperature: ");
  Serial.print(temperatureC);
  Serial.println(" °C");

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 20);
  display.print("Temp: ");
  display.print(temperatureC);
  display.println(" C");
  display.display();

 
  switchOffAllLEDs();

  if (temperatureC <= 10) {
    // Tidak melakukan apa-apa
  } 
  else if (temperatureC < 20) {
    switchOnLED(LED_PIN_1);
  } 
  else if (temperatureC < 35) {
    switchOnLED(LED_PIN_2);
  } 
  else if (temperatureC < 40) {
    switchOnLED(LED_PIN_3);
  } 
  else {
    switchOnLED(LED_PIN_4);
  }

  delay(1000); 
}

void switchOnLED(int pin) {
  digitalWrite(pin, HIGH);
  delay(500);
  digitalWrite(pin, LOW);
  delay(500);
}

void switchOffAllLEDs() {
  digitalWrite(LED_PIN_1, LOW);
  digitalWrite(LED_PIN_2, LOW);
  digitalWrite(LED_PIN_3, LOW);
  digitalWrite(LED_PIN_4, LOW);
}
esp:0
esp:1
esp:2
esp:3
esp:4
esp:5
esp:6
esp:7
esp:8
esp:9
esp:10
esp:11
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:20
esp:21
esp:35
esp:36
esp:37
esp:38
esp:39
esp:40
esp:41
esp:42
esp:45
esp:46
esp:47
esp:48
esp:3V3.1
esp:3V3.2
esp:RST
esp:5V
esp:GND.1
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:GND.4
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
temp1:GND
temp1:DQ
temp1:VCC
r1:1
r1:2