#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define SCREEN_WIDTH 128 // Lebar layar OLED, dalam piksel
#define SCREEN_HEIGHT 64 // Tinggi layar OLED, dalam piksel
#define RELAY_PIN 21
// Deklarasi untuk layar SSD1306 yang terhubung melalui I2C (pin SDA, SCL)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define ONE_WIRE_BUS 7 // Ganti dengan pin GPIO yang Anda gunakan untuk DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float lastTemperatureC = 0; // Suhu terakhir yang ditampilkan
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(21, LOW);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Gagal mengalokasikan SSD1306"));
for (;;);
}
delay(1000);
display.clearDisplay();
display.setTextColor(WHITE);
// Inisialisasi sensor suhu
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
// Periksa apakah suhu berubah sebelum memperbarui tampilan
if (temperatureC != lastTemperatureC) {
lastTemperatureC = temperatureC;
if(temperatureC > 50){
digitalWrite(21, HIGH);
}
else{
digitalWrite(21, LOW);
}
// Tampilkan suhu pada OLED
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Suhu: ");
display.setTextSize(2);
display.setCursor(0, 10);
display.print(temperatureC);
display.print(" ");
display.setTextSize(1);
display.cp437(true);
display.write(167);
display.setTextSize(2);
display.print("C");
display.display();
}
}
Loading
franzininho-wifi
franzininho-wifi
Loading
ds18b20
ds18b20