#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int potPin = A0; // Pin analog potensiometer
const int buttonPin1 = 4; // Pin digital tombol 1
const int buttonPin2 = 3; // Pin digital tombol 2
int tempC = 0; // Nilai suhu dalam Celsius
int tempK = 0; // Nilai suhu dalam Kelvin
int tempR = 0; // Nilai suhu dalam Reamur
int mode = 0; // Mode tampilan: 0 = Celsius, 1 = Kelvin, 2 = Reamur
void setup() {
pinMode(buttonPin1, INPUT_PULLUP); // Set tombol 1 sebagai input dengan pull-up resistor
pinMode(buttonPin2, INPUT_PULLUP); // Set tombol 2 sebagai input dengan pull-up resistor
display.setCursor(0, 0);
display.print("data pot : ......"); // Tampilkan placeholder untuk data potensiometer
display.setCursor(0, 1);
display.print("temp : ......"); // Tampilkan placeholder untuk nilai suhu
}
void loop() {
int potValue = analogRead(potPin); // Baca nilai potensiometer
// Konversi nilai potensiometer menjadi suhu dalam satuan Celsius, Kelvin, dan Reamur
tempC = map(potValue, 0, 1023, 0, 100);
tempK = tempC + 273;
tempR = tempC * 0.8;
// Tampilkan nilai suhu sesuai dengan mode tampilan saat ini
if (mode == 0) {
display.setCursor(11, 1);
display.print(" "); // Hapus nilai suhu sebelumnya
display.setCursor(11, 1);
display.print(tempC, DEC); // Tampilkan nilai suhu dalam Celsius
} else if (mode == 1) {
display.setCursor(11, 1);
display.print(" "); // Hapus nilai suhu sebelumnya
display.setCursor(11, 1);
display.print(tempK, DEC); // Tampilkan nilai suhu dalam Kelvin
} else if (mode == 2) {
display.setCursor(11, 1);
display.print(" "); // Hapus nilai suhu sebelumnya
display.setCursor(11, 1);
display.print(tempR, DEC); // Tampilkan nilai suhu dalam Reamur
}
// Cek tombol 1
if (digitalRead(buttonPin1) == LOW) {
delay(50); // Debounce
if (mode == 0) {
mode = 1; // Ganti mode tampilan ke Kelvin
} else if (mode == 1) {
mode = 2; // Ganti mode tampilan ke Reamur
} else if (mode == 2) {
mode = 0; // Ganti mode tampilan ke Celsius
}
}
// Cek tombol 2
if (digitalRead(buttonPin2) == LOW) {
delay(50); // Debounce
if (mode == 0) {
mode = 2; // Ganti mode tampilan ke Reamur
} else if (mode == 1) {
mode = 0; // Ganti mode tampilan ke Celsius
} else if (mode == 2) {
mode = 1; // Ganti mode tampilan ke Kelvin
}
}
}