#include <Wire.h> //menggunakan librarry wire
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, satuan pixels
#define SCREEN_HEIGHT 64 // OLED display height, satuan pixels
#define ADC_VREF_mV 5000.0 // nilai tegangan reference ADC dalam satuan millivolt
#define ADC_RESOLUTION 1024.0
#define PIN_LM35 A1 // pin sensor temperature - LM35
byte potensio= A0; // pin analog A0 potensiometer
int nilai;
int target;
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Koleksi display OLED SSD1306 menggunakan I2C
String tempString;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT); // Set PIN untuk Relay
// Inisialisasi Alamat I2C 0x3C Oled dispplay 128x64
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Display Oleh Gagal Terhubung"));
while (true);
}
delay(2000); // tunda 2 detik
oled.clearDisplay(); // bersihkan tampilan display
oled.setTextSize(2); // set ukuran text
oled.setTextColor(WHITE); // set warna putih
oled.setCursor(0, 10); // set posisi kursor
tempString.reserve(10); // untuk menghindari fragmentasi memori saat menggunakan String
}
void loop() {
// mendapakan nilai analog dari putran potensio meter
nilai= analogRead(potensio);
// memetakan nilai analog dari 0 s/d 1023 ke rentang nilai 0 s/d 100
target= map(nilai, 0, 1023, 0, 100);
// mendapatkan nilai ADC dari sensor temperature LM35
int adcVal = analogRead(PIN_LM35);
// convert ADC ke tegangan (millivolt)
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
// convert nilai tegangan ke Celsius
float tempC = milliVolt / 10;
tempString += "Temp :";
tempString += String(tempC, 2);
//tampilAdc ("Target: ");
Serial.print(target);
Serial.print("\t");
Serial.println(String(tempC, 2));
if ( tempC < target) {
digitalWrite(LED_BUILTIN, HIGH);
}else{
digitalWrite(LED_BUILTIN, LOW);
}
oled.clearDisplay(); // Bersihkan display
oled.setCursor(10, 10); // Set posisi kursor ke baris kolom 10 dan baris 40
oled.println("Target:"); // Tampilkan Tulisan Target ke display
oled.setCursor(90, 10); // Set posisi kursor ke baris kolom 90 dan baris 10
oled.println(target); // Tampilkan nilai target dari putaran potensio rentang 0-100
oled.setCursor(10, 40); // Set posisi kursor ke baris kolom 10 dan baris 40
oled.println("Aktual:"); // Tampilkan Tulisan Target ke display
oled.setCursor(90, 40); // Set posisi kursor ke baris kolom 90 dan baris 40
oled.println(String(tempC, 0)); // Tamapilkan nilai temperature dari sensor LM35
oled.display(); // Refresh tampilan
}
Comments