Devre bağlantı şeması:
Arduino kodu:
#include <TM1637Display.h>
#include <DHT.h>
// DHT22 tanımlamaları
#define DHTPIN 2 // DHT22 data pini Arduino'nun 2. pinine bağlı
#define DHTTYPE DHT22 // DHT22 sensör tipi
DHT dht(DHTPIN, DHTTYPE);
// TM1637 tanımlamaları
#define CLK 3 // TM1637 saat pini
#define DIO 4 // TM1637 veri pini
TM1637Display display(CLK, DIO);
// "C" karakterinin segment tanımı
const uint8_t c_char = 0b00111001; // Üst, sol üst, sol alt ve alt segmentler yanıyor -> "C" harfi
const uint8_t h_char = 0b01110110; // "H" harfi için segment dizilimi
void setup() {
dht.begin();
display.setBrightness(0x00); // Ekran parlaklığı (maksimum 0x0f min 0x00)
Serial.begin(9600); // Seri monitör için başlatma
}
void loop() {
// Sıcaklık ve nem verilerini al
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Verileri kontrol et
if (isnan(temperature) || isnan(humidity)) {
display.showNumberDec(8888); // Hata durumunda ekran 8888 gösterecek
delay(2000);
return;
}
// Seri monitöre veri yazdırma
Serial.print("Temperature: ");
Serial.println(temperature);
Serial.print("Humidity: ");
Serial.println(humidity);
// Sıcaklık gösterimi (örneğin 27°C)
int displayTemp = (int)temperature; // Ondalıkları at
// Segment dizisi oluşturuyoruz
uint8_t segments[4];
segments[0] = display.encodeDigit((displayTemp / 10) % 10); // Onlar basamağı
segments[1] = display.encodeDigit(displayTemp % 10); // Birler basamağı
segments[2] = 0b00000000; // Boş segment (isteğe bağlı)
segments[3] = c_char; // C harfini gösteren segment
// Ekrana segmentleri yerleştir
display.setSegments(segments);
delay(2000); // 2 saniye bekle
// Nemi iki haneli göster (örneğin %83 yerine H 83 gibi)
int displayHum = (int)humidity; // Ondalıkları at
uint8_t humSegments[4];
humSegments[0] = display.encodeDigit((displayHum / 10) % 10); // Onlar basamağı
humSegments[1] = display.encodeDigit(displayHum % 10); // Birler basamağı
humSegments[2] = 0b00000000; // Boş segment (isteğe bağlı)
humSegments[3] = 0b01110110; // "H" harfini gösteren segment
// Ekrana segmentleri yerleştir
display.setSegments(humSegments);
delay(2000); // 2 saniye bekle
}
C: Celsius cinsinden ortam ısısı, H: Yüzde cinsinden Humidity (Nem) oranı.