Merhaba arkadaşlar, bu uygulamamızda DHT11 ile sıcaklık ve nem sensöründen okuduğumuz sıcaklık bilgisine göre RGB ledimizin kontrolünü sağlayacağız.


Malzeme Listesi:


Sıcaklık ve nem sensörü, 0°C ile 50°C aralığındaki sıcaklık değerini ve %20 ile %90 aralığındaki nem değerini ölçmektedir. Ayrıca çalışması için bir kütüphane indirmemiz gerekiyor. DHT11 kütüphanesini indirelim. Daha önceden RGB ledimizi kullanmıştık. Burada sadece RGB ledimizin kırmızı ve mavi renklerini kullanacağımızdan, ilgili pinleri kullanıyoruz. DHT11 sıcaklık modülünün data pininde 10K ohm değerinde bir “Pull-up” direnci kullanıyoruz. Bu direnç elektriksel parazitlenmeyi engelleyecektir.

Aşağıdaki devre şemamıza göre devremizi breadboard üzerine kuralım.

 

Devremizi kurduktan sonra dht11 kütüphanesini buraya tıklayıp indirdikten sonra kurabilirsiniz. kütüphane kurulumuda bittiğine göre Kodumuza geçebiliriz.

#include <dht11.h>
#define DHT11PIN 7
#define kirmiziPin 5
#define maviPin 6
dht11 DHT11;
float Mavi_deger=0, Kirmizi_deger=0;
void setup()
{
Serial.begin(9600);
pinMode(maviPin, OUTPUT);
pinMode(kirmiziPin, OUTPUT);
}
void loop()
{
Serial.println();
int chk = DHT11.read(DHT11PIN);
Serial.print("NEM (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("SICAKLIK (C): ");
Serial.println((float)DHT11.temperature, 2);
Mavi_deger = 250-(10*DHT11.temperature);
if(Mavi_deger<0)
Mavi_deger=0;
Kirmizi_deger=(10*DHT11.temperature)-250;
if(Kirmizi_deger<0)
Kirmizi_deger=0;
analogWrite(maviPin, Mavi_deger);
analogWrite(kirmiziPin,Kirmizi_deger);
delay(2000);
}
view raw gistfile1.txt hosted with ❤ by GitHub

#include <dht11.h> ile DHT11 kütüphanesi eklendi.

Gerekli pin tanımlamaları yapıldı.

#define DHT11PIN 7 komutu ile sensörümüzün bağlı olduğu pini tanımlamış olduk.

Gerekli değişken tanımlamaları yapıldı. Burada float tipinde tanımlamış olduğumuz değişkenler ondalıklı sayı tipinde tanımlanmış oldu.

Serial haberleşmemizi başlattık ve çıkış pinlerini tanımladık.

int chk = DHT11.read(DHT11PIN); komutu ile hangi pinden okuma alacağını belirttik

Serial.print komutları ile sıcaklık ve nem bilgileri serial ekrana yazdırılır.

Mavi_deger = 250 – (10 * DHT11.temperature); bu denklem, sıcaklık değeri 0 ile 25°C arasındaysa mavi ledin parlaklığının bu sıcaklık değerine oranla ayarlanmasını sağlayacaktır.

Kirmizi_deger = (10 * DHT11.temperature) – 250; bu denklem, sıcaklık değeri 25 ile 50°C arasındaysa kırmızı ledin parlaklığının bu sıcaklık değerine oranla ayarlanmasını sağlayacaktır.

Elde edilen mavi ve kırmızı değerler PWM sinyali için kullanılarak İlgili pinlere analog yazma işlemi gerçekleştirildi.


Özet olarak ölçülen sıcaklık ve nem bilgisi seri ekrana yazdırılacak. Sıcaklık 0°C ile 25 °C arasındaysa mavi led, 25°C ile 50°C arasındaysa kırmızı led ve ölçülen sıcaklık değerine göre bu ledlerin parlaklığı ayarlanacaktır.


Kodumuzu yüklediğimizde seri ekranımızda bu şekilde sıcaklık ve nem değerlerinin görülmesi gerekiyor. Eğer takıldığınız bir yer olduysa veya bize sormak istediğiniz bir şey olursa size yardımcı olmayı çok isteriz. Bu nedenle yorum yazmaktan çekinmeyin!


Bu dersimiz işinize yaradıysa ve hoşunuza gittiyse diğer derslerimize göz atmayı unutmayın 🙂

1 Yorum

  1. birkaç hatası var. kodların düzeltilmiş hali. fakat test edemedim RGB ledim arızalı çıktı.

    #include
    #define Sensor_pin 4
    #define kirmiziPin 5
    #define maviPin 6
    DHT11 dht11(Sensor_pin);
    float Nem=0, Sicaklik=0, Mavi_deger=0, Kirmizi_deger=0;
    void setup()
    {
    Serial.begin(9600);
    pinMode(maviPin, OUTPUT);
    pinMode(kirmiziPin, OUTPUT);
    }
    void loop()
    {
    int sensor_oku=dht11.read(Nem, Sicaklik);
    Serial.print(“Nem = “);
    Serial.print(Nem,2);
    Serial.print(” , “);
    Serial.print(“Sicaklik = “);
    Serial.println(Sicaklik,2);
    Mavi_deger = 250-(10*Sicaklik);
    if(Mavi_deger<0)
    Mavi_deger=0;
    Kirmizi_deger=(10*Sicaklik)-250;
    if(Kirmizi_deger<0)
    Kirmizi_deger=0;
    analogWrite(maviPin, Mavi_deger);
    analogWrite(kirmiziPin,Kirmizi_deger);
    delay(2000);
    }

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz