Bu rehberde, ESP8266 NodeMCU geliştirme kartına DS18B20 dijital sıcaklık sensörü ve 0.96 inç I2C OLED ekran bağlayarak anlık sıcaklık değerini ekranda gösteren bir hava istasyonu / termometre projesi hazırlıyoruz.
Şemaya uygun pin bağlantıları adım adım şu şekildedir:
Kodu derlemeden önce Arduino IDE Kütüphane Yöneticisi üzerinden OneWire, DallasTemperature ve Adafruit SSD1306 kütüphanelerini yüklemeniz gerekmektedir:
// ESP8266 NodeMCU DS18B20 & OLED Sıcaklık Göstergesi
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// OLED ekran boyutları ve konfigürasyonu
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// DS18B20 Pin ve Nesne Tanımlamaları
#define ONE_WIRE_BUS D5 // D5 pini (GPIO14)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float sicaklikC = 0.0;
void setup() {
Serial.begin(115200);
// DS18B20 sensörünü başlat
sensors.begin();
// OLED ekranı başlat (0x3C genelde standart I2C adresidir)
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("OLED ekran bulunamadi!"));
for(;;);
}
display.clearDisplay();
display.setTextColor(WHITE);
}
void loop() {
// Sensörden sıcaklık verisini iste
sensors.requestTemperatures();
sicaklikC = sensors.getTempCByIndex(0);
// Veriyi Seri Port Ekranına Yazdır
Serial.print("Sicaklik: ");
Serial.print(sicaklikC);
Serial.println(" *C");
// OLED Ekranı Temizle ve Güncelle
display.clearDisplay();
// Başlık
display.setTextSize(1);
display.setCursor(20, 5);
display.print("YENIDIR TERMOMETRE");
display.drawLine(0, 18, 128, 18, WHITE);
// Sıcaklık Değeri
display.setTextSize(2);
display.setCursor(15, 30);
display.print(sicaklikC, 1); // Virgülden sonra 1 basamak
display.print(" ");
display.write(247); // Derece (°) sembolü
display.print("C");
display.display();
delay(1000); // 1 saniyede bir güncelle
}
Henüz yorum yapılmamış. İlk yorumu siz yapın!