#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define fan 2
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int ntcPin1 = A0;
const int ntcPin2 = A1;
const int fanPin = 2;
const float R1 = 10000;
const float T0 = 25;
const float B = 3950;
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("LCD HILANG"));
for (;;);
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(29,26); display.println(F("KRIK-G"));
display.display();
delay(5000);
}
void loop() {
float temp1 = readTemperature(ntcPin1);
float temp2 = readTemperature(ntcPin2);
//display suhu radiator
display.clearDisplay();
display.setTextSize(1.5);
display.setCursor(25, 0);
display.print("SUHU RADIATOR");
display.setTextSize(2);
display.setCursor(25,10);
display.print(temp1);
display.println("C");
//display suhu oil
display.setTextSize(1.5);
display.setCursor(25, 35);
display.print("SUHU OIL");
display.setTextSize(2);
display.setCursor(25, 45);
display.print(temp2);
display.println("C");
display.display();
delay(500);
if (temp1 >=98) {
digitalWrite(fan, HIGH);
display.setTextSize(1);
display.setCursor(0, 0);
display.println("HOT!");
display.display();
delay(200);
}
else if (temp1 <=95) {
digitalWrite(fan, LOW);
}
if(temp2 >=95){
display.setTextSize(1);
display.setCursor(0, 35);
display.println("HOT!");
display.display();
delay(200);
}
}
//rumus NTC to Celcius
float readTemperature(int pin) {
int adcValue = analogRead(pin);
float resistance = (1023.0 / adcValue - 1) * R1;
float temperature = 1.0 / (log(resistance / R1) / B + 1 / (T0 + 273.15)) - 273.15;
return temperature;
}