DHT11 Sıcaklık ve Nem Sensörünün Arduino ile Kullanımı

Daha önce DS18B20 dijital sıcaklık sensörü ile ilgili bir yazı yazmıştım. Bu yazımda da yine tek dijital pin aracılığıyla sıcaklık ve nem verileri sağlayan, ucuz, nispeten hassiyeti az olan DHT11 dijital sıcaklık ve nem sensöründen bahsetmeye çalışacağım.

Ölçüm aralığı ve hassasiyetinden bahsederek başlayalım. -? aralığındaki nemi ±%5 hassasiyetle, 0-50°C aralığındaki sıcaklığı ise ±2°C hassasiyetle ölçebilen sensör ek olarak sadece 1 adet 10k dirence ihtiyaç duyuyor Arduino ile kullanabilmek için.

Yandaki resimdeki gibi bağlantıları yaptıktan sonra aşağıdaki bağlantılardan indirebileceğiniz dht11 kütüphanesini yüklüyoruz. (dht11 klasörünü Arduino>libraries klasörüne kopyalıyoruz.)

Aşağıda paylaşacağım örnek program kütüphaneyle birlikte de geliyor. File>Examples menüsünden ulaşabilirsiniz.

 

// Arduinoturkiye.com DHT11 Test Programı
// Yazar: Joseph Dattilo (Virtuabotix LLC) - Version 0.4.5 (11/11/11)
// Düzenleme: İsmail BUÇGÜN

#include <dht11.h> // dht11 kütüphanesini ekliyoruz.
#define DHT11PIN 2 // DHT11PIN olarak Dijital 2"yi belirliyoruz.

dht11 DHT11;

void setup()
{
  Serial.begin(9600); // Seri iletişimi başlatıyoruz.
  Serial.println("Arduinoturkiye.com DHT11 Test Programi");
}

void loop()
{
  // Bir satır boşluk bırakıyoruz serial monitörde.
  Serial.println();
  // Sensörün okunup okunmadığını konrol ediyoruz. 
  // chk 0 ise sorunsuz okunuyor demektir. Sorun yaşarsanız
  // chk değerini serial monitörde yazdırıp kontrol edebilirsiniz.
  int chk = DHT11.read(DHT11PIN);

  // Sensörden gelen verileri serial monitörde yazdırıyoruz.
  Serial.print("Nem (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Sicaklik (Celcius): ");
  Serial.println((float)DHT11.temperature, 2);

  Serial.print("Sicaklik (Fahrenheit): ");
  Serial.println(DHT11.fahrenheit(), 2);

  Serial.print("Sicaklik (Kelvin): ");
  Serial.println(DHT11.kelvin(), 2);

  // Çiğ Oluşma Noktası, Dew Point
  Serial.print("Cig Olusma Noktasi: ");
  Serial.println(DHT11.dewPoint(), 2);

  // 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak.
  delay(2000);

}

Çok hassas ölçümler gerektirmeyen, biraz daha genel ölçümlere ihtiyaç duyduğunuz projelerinizde kullanabileceğiniz, kullanımı kolay, ucuz bir çözüm DHT11. LCD ile birlikte kullanarak kendi hava durumu istasyonunuzu oluşturabilirsiniz. Yücel Çetin”in Arduino RF Haberleşme yazısında anlattığı şekilde,ölçtüğünüz değerleri, RF ile farklı bir noktaya iletebilirsiniz.

İyi çalışmalar.

Kaynaklar:

Gerekli Olabilecek Bağlantılar:

İsmail

Üniversite öğrencisi, Arduino meraklısı.

180 comments

  1. ender dedi ki:

    Ben bu kodları 2*16 LCD ekranda kullanabilir miyim. Kullanırsam kodları nasıl düzenlemeliyim.İyi günler İyi Çalışmalar…

    • Halil dedi ki:

      dht11 2×16 aktarmak için kullandığım kod

      #include
      #include “DHT.h”

      #define DHTPIN 9 // what pin we’re connected to
      // Uncomment whatever type you’re using!
      #define DHTTYPE DHT11 // DHT 11
      //#define DHTTYPE DHT22 // DHT 22 (AM2302)
      //#define DHTTYPE DHT21 // DHT 21 (AM2301)

      // Connect pin 1 (on the left) of the sensor to +5V
      // Connect pin 2 of the sensor to whatever your DHTPIN is
      // Connect pin 4 (on the right) of the sensor to GROUND
      // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

      LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

      DHT dht(DHTPIN, DHTTYPE);

      void setup() {

      pinMode(13, OUTPUT);

      Serial.begin(9600);

      lcd.begin(16,2);
      lcd.clear();

      dht.begin();

      }

      void loop() {
      digitalWrite(13, HIGH);

      // Reading temperature or humidity takes about 250 milliseconds!
      // Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)
      float h = dht.readHumidity();
      float t = dht.readTemperature();

      // check if returns are valid, if they are NaN (not a number) then something went wrong!
      if (isnan(t) || isnan(h)) {
      Serial.println(“. Failed to read from DHT11 sensor”);
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(” SENSOR ERROR”);
      lcd.setCursor(0, 1);
      lcd.print(” Failed to read”);
      delay(3000);
      } else {
      Serial.print(“Humid: “);
      Serial.print(h);
      Serial.print(“% “);
      Serial.print(“Temp: “);
      Serial.print(t);
      Serial.println(” C”);

      digitalWrite(13, LOW);
      delay(150);

      lcd.clear();

      lcd.setCursor(0, 0);

      lcd.print(” Nem: “);

      lcd.print(h);

      lcd.print(“%”);

      lcd.setCursor(0, 1);

      lcd.print(“Sicak: “);

      lcd.print(t);

      lcd.print(“C”);

      }
      }

  2. kaanceyhan dedi ki:

    @ender 16×2 ile kullanımı için 16×2 LCD yazısına bakabilirsin. yorum kısmına bir örnek kod eklemiştim.
    http://arduinoturkiye.com/arduino-uno-16×2-lcd-pcm1602b/

    • cihan dedi ki:

      DHT11 sensörüyle ölçtüğümüz dew.Point tam olarak nedir? Yani dew.Point komutuyla biz aslında neyi ölçüyoruz tam olarak

      • Ömer Koman dedi ki:

        isviçreli ve ingiliz bilim adamları oturup düşünmüşler ve keşfetmişlerki havadaki nem yoğunlaşarak su haline dönüşme noktasını sıcaklık ve nem bilgilerden belli bir formule göre hesaplayarak bulanabiliyor. bunun bize pratikte faydası tarım alanında görülebilir su her nekadar +4 derecede donsa da havadaki nem ve sıcaklık öyle bir orana yaklaşırki nem bir anda suya dönüşerek meyvelerin çiçeklerin üzerinde yoğunlaşır ve yazın ortasında don oluşabilir buda ürüünün hasar görmesine bozulmasına neden olur böyle durumlara hazırlık olması için nem ve sıcaklık ölçerler büyük fan ve ısıtıcıları yöneterek bu durumu önlemeye çalışırlar. bazı soğuk hava depolarında da deponun içinin sadece “serin” olması istenir donması istenmez bu durumunda tespit edilmesinde faydalanılır.

  3. kk_32 dedi ki:

    dht11 sıcaklık sensörünü kullanırken dijital pin 2 olarak seçilmiş
    acaba pwm bir pini giriş olarak belirleyerek kullansak daha mı uygun olur?
    yoksa pwm sadece çıkış için midir?

  4. ömer dedi ki:

    Merhaba ben yeni yeni arduıno kullanıyorum bu ılk projem. sabah arduınom çalışıyodu sıcaklık ve nem bilgisinide gösterdim yalnız aksam salonda calıştırdım.oda sıcaklıgı yuksektı lcd uzerinde nem ve sıcaklık değerim hep SIFIRI gösteriyor nedendir yardımcı olabilirmisiniz.

  5. Ömer Koman dedi ki:

    bağlantıları tekrar gözden geçir kodu tekrar yükle

  6. fatih dedi ki:

    DHT11 sensörüyle nem ölçmem gerekiyor programım c kodu ile sensörden nasıl okuma yapabilirim yardıma ihtiyacım var

  7. Ömer Koman dedi ki:

    selam fatih yukarıdaki kod işini görür. humidty denen satır bağıl nem bilgisidir. kolay gelsin.

  8. Ömer Koman dedi ki:

    bir şey değil bana değil ismail buçgüne teşekkür et. soruyu sormadan önce sayfayı ve kodu okusaydın keşke. boşuna 1 hafta zamanın geçmezdi.

  9. Murat dedi ki:

    peki bi ekran entegre edip oraya yazdıra bilmemiz mümkün müdür ?

  10. kadir uçar dedi ki:

    herkese selam. benim projem belirli bir alandaki dht11 sensörü ile ısı ve nem bilgilerinin alınıp kablosuz olarak bilgisayar ortamına aktarılmasıdır. Ben maket olarak herşeyi bitirdim. Şuan ardunio uno kart ile usb bağlantısı şeklinde bilgileri bilgisayara aktarabiliyorum ama bunun kablosuz şeklinde hangi parçalar ile ve nasıl yapabilirim. Şimdiden sağolun .

  11. kadir uçar dedi ki:

    ömer koman şimdiden cevabınız için teşekkür ederim. Ancak ben rf modülleri yerine aşağıda yer alan linkteki bluetooth ile yapmayı planlıyorum . Sizce bu daha iyi ve uygun olmaz mı

    http://www.robotistan.com/HC06-Bluetooth-Serial-Modul-Karti-HC06-BC417-Bluetooth-to-Serial-Port-Module-Breakout-Board%2cPR-1489.html

  12. Ömer Koman dedi ki:

    bluetooth ile p2p serial protokolu kullanırsın ancak, aynı anda sadece 2 cihaz birbiri ile bağlantı kurar. ben daha fazla ölcum noktası varmış gibi anladım. bluetooth da olur ama mesafe fazla uzun olmaz 3-5 metreden sonra bağlantı kaybolur…

  13. Mehmet Fatih Kızıltan dedi ki:

    Programı derleyince hata veriyor ne yapmam lazım?

    dgt11_uno:6: error: ‘dht11’ does not name a type
    dgt11_uno.ino: In function ‘void loop()’:
    dgt11_uno:20: error: ‘DHT11’ was not declared in this scope

  14. BAHADDİN dedi ki:

    şimdi bu programı derleyince boyle bir hata veriyor acaba neden olabilir..

    ketch_apr14a:33: error: ‘class dht11’ has no member named ‘fahrenheit’
    sketch_apr14a:36: error: ‘class dht11’ has no member named ‘kelvin’
    sketch_apr14a:40: error: ‘class dht11’ has no member named ‘dewPoint’

    • Ömer Koman dedi ki:

      şöyle yapın bütün arduino programlarını kapatın, yazının altındaki örnek programın olduğu rar dosyasını indirin ve içine girin, orada dht11 klasörünü göreceksiniz öyle dursun kenarda, sonra arduino nerede kurulu ise oraya gidin (örnek c:\program files\arduino) ve o arduino klasörü içinde libraries klasörüne gidin(şimdi c:\program files\arduino\libraries içindesin) sonra rarın içindeki dht11 klasörünü kulağından tutulup libraries e sürükleyip bırakın libraries altında dht11 klasörünü görmen lazım. sonra dht11 klasörüne gir oradan examples altındaki programa gir ve compile et sorunsuz çalışacaktır…

  15. BAHADDİN GÜNDÜZ dedi ki:

    yaptıgınızı denedim sıcaklık ve nemi ölçüyor galiba kelvin ve fahreaithttte sorun çıkarıyor… ikinci olarka ethernet kartımı bir türlü kullanamadım .. mac adresi falan atanacak mıs ama benim aldıgım ethernet kartının altında o adres yazmıyor rastgele adres yazdım ama ne yaptıysam olmadı kutuphanedeki bütün ornekleri denedim ama hiçbirinden sonuç alamadım .sizce hata nerden kaynaklanıyor ve mac adresi ile ip adresini neye göre vereceğim.. çok tesekkur ederim

    • Ömer Koman dedi ki:

      ethernetteki hata mesajlarını görmeden bir şey söylemek mümkün değil. birde aldığınız hata mesajlarını google dan aratın birşeyler çıkar mutlaka

  16. BAHADDİN GÜNDÜZ dedi ki:

    tesekkur ederim ilginiz için.. arduino ethernet shield değil de arduino ethernet V 1.1 almısım ondan dolayı galiba sorun

  17. iclal dedi ki:

    Merhaba, arduino mega ve 3.2″ tft kullanıyorum.bununla 2 ac servo sürücü kontrol ediyorum. motorları kontrol edebilmem için tft yi gerekli kablolarla arduino dan ayırdım.ekran geliyor fakat dokunmatik çalışmıyor. ground hatası mı yapıyorum anlamadım.bu konuda yardımcı olabilir misiniz. tft yi harici mi beslemem gerekiyor?eğer öyleyse 3.3V mu yoksa 5V ile mi beslemem gerekiyor.

    • Ömer Koman dedi ki:

      tft nin dokunmatiği bazı sistemlerde analog çalışır adc ile okursun bazılarında i2c veya spi portundan sorgulanarak okursun 4veya 5 telli bir bağlantısı vardır onları kontrol etmekte fayda var. tft ler genelde 3.3v ile çalışırda bazılarının kendi ustunde power dönüştürücusu olablır ne kullanıyorsan datasheetini bul bu değerleri oradan doğrula boşa konuşuyoruz şu anda aslında…

  18. BAHADDİN GÜNDÜZ dedi ki:

    İYİ GÜNLER SAYIN HOCAM BU ASAGIDAKİ KODU YAZDIM EŞİK DEĞERİNİ AŞTIĞI ANDA MAİL ATSIN İSTEDİM.. SU AN İÇİN ÇALIŞIYOR ama durmadan mail atıyor bunu durdurabilirmiyim sadece bir defa atsın istiyorum ve lcd ye bir türlü koddaki ifadeyi yazdıramadım yardımcı olabilirseniz çok sevinirim …TEŞEKKÜRLER

    #include
    #include
    #include
    #include
    #include
    #include // dht11 kütüphanesini ekliyoruz.
    #define DHT11PIN 6 // DHT11PIN olarak Dijital 2″yi belirliyoruz.

    dht11 DHT11;

    const int WAIT = 300; // delay time

    byte mac[] = { 0x88, 0xAE, 0x6F, 0x59, 0x89, 0x75 }; //physical mac address
    byte ip[] = { 192, 168, 3, 74 }; // ip in lan
    byte gateway[] = { 192, 168, 3, 1 }; // internet access via router
    byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
    String smtpServerName = “mail.abdullahbalta.com”;
    byte smtpServerIP[] = { 89, 19, 1, 114 };
    // Login data for COMCAST (already in MIME Base64 format)
    String UserName64 = “YWRtaW5AYWJkdWxsYWhiYWx0YS5jb20=”;
    String Password64 = “Q2Z0NjdVam0=”;
    // ******************************** Mail information
    String Sender = “admin@abdullahbalta.com”;
    String Recipient = “bahaddingunduz@hotmail.com”;
    String Subject = “GAZ SEVİYESİ TEHLIKELI BOYUTTA “;
    String Body = “DEGERLER ESIK DEGERLERIN USTUNDE “;

    // ******************************** Arduino network connection
    String ServerResponse=””;
    EthernetClient client;
    //EthernetServer server(25);
    //Client client(server, 25);
    //Client client;
    const int analogInPin = A0;
    const int analogInPin1 = A1;// Analog input pin that the potentiometer is attached to
    const int ledPin = 5; // LED connected to digital pin 13
    const int ledPin1= 2;
    const int ledPin2= 3;
    const int ledPin3= 4;
    unsigned char buzzerPin = 13;

    int sensorValue = 0;
    int sensorValue1=0;// value read from the sensor
    int dhtValue=0;
    LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
    void setup()
    {

    Serial.begin(9600); // for debug
    // get me some ip addressage!
    lcd.begin(16,2);
    pinMode(ledPin, OUTPUT);
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
    pinMode(ledPin3, OUTPUT);
    pinMode(13, OUTPUT);

    vodSetupCommunications();

    // Send the vodSendEmail notification.

    }

    void loop()
    {

    sensorValue = analogRead(analogInPin);

    sensorValue1=analogRead(analogInPin1);

    int chk = DHT11.read(DHT11PIN);

    // 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak.
    delay(1000);

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(“CH4 =”);
    lcd.setCursor(5,0);
    lcd.print(sensorValue );
    lcd.print(” CO=”);
    lcd.print(sensorValue1);
    lcd.setCursor(0,1);
    lcd.print(“S=”);
    lcd.print(DHT11.temperature);
    lcd.print(“C”);

    lcd.setCursor(7,1);
    lcd.print(“NEM=%”);
    lcd.print(DHT11.humidity);
    delay(1000);

    lcd.clear();

    if (sensorValue >= 1000)
    {

    digitalWrite(ledPin, HIGH);
    digitalWrite(ledPin1, LOW);
    lcd.setCursor(1,0);
    digitalWrite(buzzerPin, HIGH);
    lcd.print(“CH4 =TEHLIKE”);
    delay(10000);

    // sets the LED on
    vodSendEmail();
    // Ensure that port is still open.
    vodTestConnection();

    }
    else
    {
    digitalWrite(buzzerPin, LOW);
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin, LOW);

    lcd.setCursor(1,0);
    lcd.print(“CH4 =GUVEN”);
    // sets the LED off
    delay(1000);

    }

    // print the results to the serial monitor:

    // wait 10 milliseconds before the next loop
    // for the analog-to-digital converter to settle

    // after the last reading:

    if (sensorValue1 >= 1000)
    {
    vodSendEmail();
    // Ensure that port is still open.
    vodTestConnection();
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    digitalWrite(buzzerPin, HIGH);
    lcd.clear();
    lcd.setCursor(1,1);
    lcd.print(“CO =TEHLIKE”);
    delay(10000);
    }
    else
    {
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(buzzerPin, LOW);
    lcd.setCursor(1,1);
    lcd.print(“C0 =GUVEN”);
    delay(1000);
    }
    }
    void beep(unsigned char delayms){
    analogWrite(1, 20); // Almost any value can be used except 0 and 255
    // experiment to get the best tone
    delay(delayms); // wait for a delayms ms
    analogWrite(1, 0); // 0 turns it off
    delay(delayms); // wait for a delayms ms
    }

    void vodSendEmail()
    {
    Serial.println(“Connecting to the SMTP server …”);

    //
    // If successful connecting to the SMTP server on
    // port 587, then pass it the information needed
    // to send the email message. Otherwise, display
    // a failure message for debugging.
    //
    if (client.connect(“mail.abdullahbalta.com”, 587))
    {
    Serial.println(“Connected to the SMTP server …”);

    vodEthernetOut(“HELO ” + smtpServerName); /* say hello*/
    vodEthernetOut(“AUTH LOGIN “);
    vodEthernetOut(UserName64); /* Username*/
    vodEthernetOut(Password64); /* Password */
    vodEthernetOut(“MAIL From:”); /* identify sender */
    vodEthernetOut(“RCPT To:”); /* identify recipient */
    vodEthernetOut(“DATA”);
    vodEthernetOut(“To: ” + Recipient); /* recipient in message header */
    vodEthernetOut(“From: ” + Sender); /* seder name in message header */
    vodEthernetOut(“Subject: “+ Subject); /* insert subject */
    vodEthernetOut(“”); /* empty line */
    vodEthernetOut(Body); /* insert body */
    vodEthernetOut(“”); /* empty line */
    vodEthernetOut(“.”); /* end mail */
    vodEthernetOut(“QUIT”); /* terminate connection */
    client.println();
    }
    else
    {
    Serial.println(“The SMTP connection has failed!”);
    }
    }

    //********************************************************
    //** vodEthernetOut
    //** This function will write to the ethernet port
    //** and then display the data written as well as any
    //** response for debugging purposes.
    //********************************************************
    void vodEthernetOut(String m) {
    // Write the string to the ethernet port.
    client.println(m);
    // Display the string that was written.
    Serial.println(“>>>” + m);
    // Pause in order to wait for a response.
    delay(WAIT);
    // Read and display any response.
    vodGetResponse();
    }

    //********************************************************
    //** vodGetResponse
    //** This function look for and display any server
    //** response for debugging purposes.
    //********************************************************
    void vodGetResponse() {
    if (client.available()) {
    char c = client.read();
    while (client.available()) { // Store command char by char.
    ServerResponse +=c;
    c = client.read();
    }
    Serial.println(“<<<" + ServerResponse);
    ServerResponse="";
    }
    }

    void vodSetupCommunications()
    {

    //
    // Variable for this function
    //
    byte byteIPByte;

    //
    // Attempt to establish connection to ethernet port.
    //
    Serial.println("Trying to connect to ethernet port …");
    // if (!Ethernet.begin(mac))
    // //if (!Ethernet.begin(mac, ip, subnet, gateway))
    // {
    // Serial.println("Failed to establish DHCP connection.");
    // // No point in carrying on, so do nothing forevermore.
    // while(true);
    // }
    /* Non-DHCP : while ( !Ethernet.begin(mac, ip, subnet, gateway) ) */
    while ( !Ethernet.begin(mac) )
    {
    Serial.println("Failed to establish DHCP connection.");
    Serial.println("retry …");
    }
    // Pause to ensure successful connection.
    delay(WAIT);

    //
    // Display the established IP address for debugging
    //
    Serial.print("My IP address: ");
    for (byteIPByte = 0; byteIPByte < 4; byteIPByte++) {
    // Print the value of each byte of the IP address.
    Serial.print(Ethernet.localIP()[byteIPByte], DEC);
    Serial.print(".");
    }
    Serial.println();
    Serial.println("***************************************");
    Serial.println();
    }

    void vodTestConnection()
    {
    if (!client.connected())
    {
    Serial.println();
    Serial.println("Port closed … reconnecting …");
    client.stop();
    delay(WAIT);
    vodSetupCommunications();
    }
    }

    • Ömer Koman dedi ki:

      koda bakmadımda maili atma durumunu bir değişkende tut ve sadece değişken sıfırsa mail at ve her maile gittiğinde 1 arttır, eşik değeri tekrar normale gelince bu mail durumunu tutugun değişkeni sıfırla durum sıfır olduğu için yeniden mail atacaktır programın…

  19. ibrahim dedi ki:

    merhaba ben arduino ile RF gömülü sistemi yapmaya çalışıyorum projemde RF sistemi ile ısı ve nem ölçeceğim bana komutlar kısmında yardım edermisiniz şimdiden bana zaman ayırdığınız için çok teşekkür ederim.

    • Ömer Koman dedi ki:

      proje desteklerini forum kısmında sorarsanız yardım edecek birileri çıkabilir belki… yeni başlayan hiç ilerlememiş projelere kolay kolay destek çıkmayabilir, malzemenizi alıp montajınızı yapın kodunuzu yazın takıldığınız yerleri sorarsanız projenizi bitirme ihtimaliniz olabilir…

  20. BAHADDİN GÜNDÜZ dedi ki:

    Hocam soyle bir sorunum var .. gaz sensoru yaptım arduino ethernetsiz gayet iyi çalışıyor ama ben maail atsın istiyorum .. Arduino etherneti sheildi takınca mail atıyor ama gaz değerleri değişmiyor ne yaptıysam olmadı ..sorun ne olabilir acaba fikriniz var mı teşekkürler

  21. Hasan Ortatepe dedi ki:

    Merhaba . arduino ilk defa kullanıyorum ve bir proje aldım . Arduino mega 2560 da 3 tane dht11 ile 3 ayrı sıcaklık ölçüp sıcaklık değerlerini arduino ya bağlı 3.2 Tft ekranda göstermem gerekiyor. tüm malzemeler elimde yalnız nasıl yapacağımı bilmiyorum yardımcı olurmusunuz

  22. Ömer Koman dedi ki:

    aldığınız malzemeleri tek tek çalıştırın örnekleri deneyin, ekranı bağlayın çalıştırın deneme kodları yukleyin en son hepsini birden bir programda birleştirip projenizi bitirin. bu kadar malzemeyi ezbere almamışsınızdır herhalde …

  23. Ömer Koman dedi ki:

    ekrana adını yazdıysan dht11 den gelen değeri de yazarsın bence, bak en yukarıda serial.printte gördüğün şeyleri tftde ki yazma rutini içine koyacaksın olacak bitecek…

  24. Hasan Ortatepe dedi ki:

    Ekranda sadece beyaz ışık var . o kadar örnek yazdım ama bi türlü ekrana yansıtamadım.

  25. Hasan Ortatepe dedi ki:

    kabloyla bağlamadım direk ITDB02 ile bağladım .

  26. medıne dedi ki:

    ben servo motorla ılgılı bı proje yapıyorum arduınoda ama yazılımda sıkıntı var glba calısmıyo yardımcı olur musunuz ?

  27. BAHADDİN GÜNDÜZ m dedi ki:

    Merhabalar hocam . bir projem var gas sensoru foruma uye olamadım bir türlü ondan dolayı burdan yazmak istedim . projemi yaptım gaz değerleri belirlenen esik seviyesinin üstündeyken alarm veriyor mail atıyor lcd de değerleri gosteriyor . web te gostersin istiyorum ve temsili ledler kullanarak onları webden yakmak istiyorum ama web kısmını bir türlü beceremedim sonuçları gosterebiliyorum ama led yakamıyorum . acaba bu konuda onerebileceginiz bir sey varmı çok ihtiyacım var

  28. BAHADDIN dedi ki:

    Ve hocam daha onceleri sensorler calisiyor du. Ama su an degerler sabit ya 0 ya 1023 değişmiyor. Su basit potansiyomeyre uygulanmasını yaptım. ayarlar değişiyor potansiyometre ile oynayinca ama. Projede sensörler. Değişmiyor .. acaba arduinonun analog çıkışların da mi sorun vardır hepsini denedim ama olmuyor. Yeni bir tane arduino almak zorunda kalacagim

    • Ömer Koman dedi ki:

      yukarıdaki şemaya göre bağlantı yapın, programı yukleyip deneyin çalışması lazım. dht11 sensoru analog değil dijital bir sensor olduğundan analog değerler değil analog okumada ya 0 yada 1023 değeri alırsın zaten. yukarıdaki kutuphaneyı kur ve programı yukle çalışır dht11 sensoru…

    • Ömer Koman dedi ki:

      gaz sensorunun uygulama şemasına uygun şekilde bağlantı yapın. belkı sensoru aşırı gaza boğuyorsunuz ara geçiş değerleri göremiyorsunuzdur. sensorun haznesindekı gazın boşalmasını beklemek lazım. sensor bozulmuşda hatalı çıkış olabılır. gaz sensorlerı ön ısıtma ile çalışır 20sn hatta 1dk bekleyıp sensorun stabıl hale gelmesını bekleyıp olcumlerı o şekılde yapmak gerekebılır bu şartları sağlayıp deneyın.

  29. BAHADDİN GUNDUZ dedi ki:

    Özür dilerim hocam belirtmeyi unuttum .. dht değil onu normal kullanıyorum değerleri goruyorum dediğiniz gibi … ben sensor derken MQ serisi gaz sensorleri kullanıyorum projede onlar da analog tan değerleri okuyor bildiğim kadarıyla ..

  30. BAHADDIN GUnDUZ dedi ki:

    deneyecegim hocam . Arduinodan kaynaklanmıyor galiba.. çünkü ledleri yakabiliyorum mail atabiliyorum lcd ve serverde değerleri gosteriyorum kolay olsun diye hazır gaz tasıyıcı kartı da aldım .. 4 farklı mq serisi sensor aldım .. ama sensor değerleri bir türlü oturmuyor. olmadı yine denedim şimdi.. Peki ardduino mega alsam acaba uno için yazdgım kodu değiştirmeden mega da da kullanabilirmiyim tekrar kod yazmak için sürem kalmadı ..
    YARDIMLARINIZ İÇİN TEŞEKKÜRLER

    • Ömer Koman dedi ki:

      bahattin uno kodu megadada çalışır ama pinleri birebir aynı bağlaman lazım belki ufak tefek kodunda duzeltme gerekebılır spi ve i2c bağlantı bacakları farklı yerlerde olabılır ozaman gerekli duzenlemelerı yapabılmen lazım.

  31. caretta caretta dedi ki:

    Arkadaşlar bunu yalnızca LCD ye aktaran çalışan bir program yok mu yardımcı olsanız.Bulduğum programlarda hata veriyor.

  32. Ömer Koman dedi ki:

    sitedeki lcdli programlardan birini yukle buradaki programdaki serial.print(“bla bla” yazan yerleri lcddeki yazdırma rutınındekı yerlere yerleştır çalışır. senın bulup hata veren programların buyuk ıhtımal lcd bağlantılarını yanlış yapıyorsun bacakları telle ve lehımleyerek bağlayın. lcd de adını yaz gor bı kere mutlaka sonra gerısı gelır buradakı programla bırleştirirsin bişey yok. panikten gözünüz kör olmuş hiç birşey görmüyorsunuz düşünemiyorsunuz paniğe luzum yok adım adım gidin 🙂

  33. BAHADDİN dedi ki:

    hocam arduino ethernet ile sms yollamak istiyorum gsm shield olmadan.. bir kaç uygulama baktım internetten .. hem mail atsın hem sms aynı kodda gerçekleştirmek mumkun mudur?
    TEŞEKKÜRLER

    • Ömer Koman dedi ki:

      mümkündür ! şuraya abone oluyorsun https://www.netgsm.com.tr . sonra şuradaki http://toplusms.netgsm.com.tr/Dokuman/api_xlm_gonderim1.asp http post api leri kullanarak internet üzerinden sms atıyorsun hatta sms alıyorsun, 20-30 tl ye 1000 tane sms atabilirsin. istersen telefon numarası yerine BAHATTINSMS diye bir numaradanda sms atabilirsin. kolay gelsin. kayıt olurken kimlik fotokopisi ve size ait bir telefon veya elektrik ft gibi şeyler de istiyorlar. herşeyiniz hazırsa 3-4 saate sms atmaya hazır hale geliyorsun… kolay gelsin.

  34. Bahattin dedi ki:

    Ucretsiz bir yolu yokmudur hocam. Extra ozellik olsun diye bitirme projoesinde kullanayim dedim sunum yaptigim anda atsin yeterli benim için sadece ,devamli kullanmayacağım..

  35. BAHADDIN dedi ki:

    Bilime inan bir insan olarak fala inanmazsiniz diye dusunuyordum .. Ama kacayim ben ne olur ne olmaz 🙂

  36. hakan dedi ki:

    hocam ben topraktaki nemi ölçüp LCD ekranda görüntülemek istiyorum nasıl yapabilirim.

    • hakan dedi ki:

      tesekurler.peki lcd ekranda nasıl goruntuleye bılırım.kod kısmında yardımcı olabılırmısınız

      • Ömer Koman dedi ki:

        o kadarına olamıyoruz. bu sizin projeniz biz böyle şeyleri yapalı 20 seneyi geçti sıra sizde şimdi.

  37. hakan dedi ki:

    tesekurler 🙂

  38. Onurcan dedi ki:

    Hocam öncelikle iyi günler arduinodan arduino ile nem sensörü aldık ve toprak nemli ise yeşil az nemli ise sarı nemsiz ise kırmızı işık yanacak bir program yapmamız lazım malzemeleri aldık ama arduino kodları yok elimizde aslen C# programlamayla ilgilendmemin sebebiyle arduinodan tam anlamıyorm ama bu ders için proje vermemmiz gerekiyor yardımcı olabilrseniz çok sevinirim şimdiden kolay gelsin başarılarınızın devamını dilerim iyi günler…

    • Ömer Koman dedi ki:

      sensoru aldığınız yerden kişiden siteden isteyeceksin kodunu mutlaka arduino kodu vardır oralarda. çok güzel bir kod yazacağınızdan eminim şimdiden kolay gelsin başarılarınızın devamını dilerim.

  39. nmelihkutlu dedi ki:

    Dht11 + LCD kodu şu şekildedir:
    (bağlantılara dikkat edin veya bağlantı kodunda değişiklik yapın.)

    #include
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

    #include
    dht11 DHT11;

    void setup()
    {
    DHT11.attach(3);

    lcd.begin(16, 2);
    lcd.print(“Start…”);
    delay (500);
    }

    void loop()
    {
    lcd.clear();
    int chk = DHT11.read();
    lcd.print(DHT11.temperature);
    lcd.print(“(‘C)”);
    delay(1000);
    }

  40. cihan dedi ki:

    dht11 sensörü ile hangi direnci kullanmak pull up olarak uygundur.Kimi diyor 5 kimi diyor 10. Bir de böyle bir direnci neden kullanıyoruz sensörün yanında

  41. Ömer Koman dedi ki:

    sensorun çıkışı açık collektör olduğu için data çıkışını “pull up/yukatı çek” direnci ile +v ye doğru çekmek gerekiyor. dijital sensorler çıkışında 1-0-1-1 şeklinde veri uretiyor sensor sadece çıkışı 0 olduğu zaman çıkışını sürüyor aşağı çekiyor çıkışı, boşta kaldığında port kararsız kalmasın diye bu direnç vasıtası ile çıkışı yukarı çekip 1 değerlerini elde etmiş oluyoruz. direncin değeri ise bu yukarı çıkış hızını belirlemek için faydalı olan birşey eğer sensor kablosu uzun ise düşük değerli bir direnç seçmekte fayda var. sensor data kablosunu çok uzun tutup birde 10k direnç koyarsak bu dirençten +v daha yavaş yukselecedği için dijital sinyalde 1 değerler algılanamaz ve hatalı okuma yapılır. direnç değeri düştükçe dalganın şekli daha duzgun olur ve duzgun okuma yaparsın.

  42. ali unal dedi ki:

    Merhabalar,
    benim bir sorum olucakti dht11 e gelen nem ve sicaklik verilerini LCD de nasil gösterebilirim.

    • Ömer Koman dedi ki:

      bu siteyi kurmamızın en büyük sebebi turkçe içerik olması böylece insanların kendi dillerinde okuyarak bir şeyler öğrenebilmesi idi. anladığım kadarı ile bu yazının altındaki yorumları hiç okumamışınız.

    • Muhammed Melik Çandar dedi ki:

      benim yaptığım bi projede aynen lcd de izleyebiliyordum işte kod ve resim
      https://www.dropbox.com/s/4jlyexu8x84btow/2014-10-23%2013.12.15.jpg?dl=0

      /*
      The circuit:
      * LCD RS pin to digital pin 46
      * LCD Enable pin to digital pin 47
      * LCD D4 pin to digital pin 48
      * LCD D5 pin to digital pin 49
      * LCD D6 pin to digital pin 50
      * LCD D7 pin to digital pin 51
      * LCD R/W pin to ground
      16 -15- 14 – 13 – 12- 11-10-9-8-7 -6 -5 -4 -3 -2 -1
      Gnd -5v- potans -46 -gnd- 47- *-*-*-* -48 -49 -20 -51 -5v -gnd
      */
      // include the library code:
      #include
      #define DHT11PIN 33
      dht11 DHT11;
      // include the library code:
      #include

      // initialize the library with the numbers of the interface pins
      LiquidCrystal lcd(46,47,48,49,50,51);

      void setup() {
      // set up the LCD’s number of columns and rows:
      Serial.begin(9600);
      lcd.begin(20, 4);
      // Print a message to the LCD.
      }

      void loop() {

      Serial.println(DHT11.temperature*20);
      lcd.setCursor(0, 0),lcd.print(“TERMOMETRE my_s1m0ne”);

      DHT11.read(DHT11PIN);
      lcd.setCursor(0, 1), lcd.print(“nem (%): “);
      lcd.print((float)DHT11.humidity, 2);

      lcd.setCursor(0, 2), lcd.print(“sicaklik (‘C): “);
      lcd.print((float)DHT11.temperature, 2);

      lcd.setCursor(0, 3), lcd.print(“sicaklik (‘F): “);
      float Fahrenheit= (float)(DHT11.temperature)*1.8 + 32;
      lcd.print(Fahrenheit, 2);
      delay (1000); lcd.clear();
      }

  43. Nadir dedi ki:

    DHT11 algılayıcı sını yaklaşık 6 aydır kullanıyorum amatör hava istasyonumda ve bölgemdeki meteoroloji (ve başka cihazlarla) değerleri kalibre ederek okunan değer üzerinde %70 yükselterek ancak doğru sonuç olabilirim. Bu hem iç hemde dış algılayıcı için geçerlidir.

    Bu arada rüzgar yönü ve hızı (mekanik tarafı) ili ilgili fiilen çalışan arkadaşlar varsa lütfen görüşelim.

    • Ömer Koman dedi ki:

      ben şunu anlamadım “okunan değer üzerinde %70 yükselterek ancak doğru sonuç olabilirim.” dht11 ile ilgili mi bu? sensorler bu kadar sapmaz en fazla %5 sapar %70 olması için başka anaormal bir durum vardır, dht11 çin malı bir ucuz bir ürün performansı kötü ise, isviçre yapımı sht11 kullanın(tamamen farklı bir ürün ve teknolojidir) %5 bile hata yapmıyor. şurada dht11 ve sht11 arasındaki bir karşılaştırma devresi videosu var http://www.youtube.com/watch?v=xlNY-qeJUrE . aslında test şekli pek uygun değil doğrusu her iki sensorun bir tup içinde olması ve değeri bilineen nem ve sıcaklığa göre gösterimleri karşılaştırılmalı.

  44. Uğur dedi ki:

    Merhaba Ben aşağıdaki hatayı almaktayım neden olabilir
    teşekkürler

    DHT11_Ornek_Program:8: error: ‘dht11’ does not name a type
    DHT11_Ornek_Program.ino: In function ‘void loop()’:
    DHT11_Ornek_Program:23: error: ‘DHT11’ was not declared in this scope

  45. Ömer Koman dedi ki:

    dht11 i bazı yerde büyük bazı yerde küçük yazmışsın, büyük yazman lazım ayrıca dht11 kutuphanesini de arduinoya eklememişsin yukarıda yazıda ve yorumlarda bol bol anlatılmış, bakarsın bi ara.

  46. salih dedi ki:

    hocam meraba bi projem var ardoino nano ile sıcaklık ve nem tespiti bunun devre şemasını , mağzemelerini , yapılış seklini bulamadım bana bi yardımcı olurmusunuz

  47. salih dedi ki:

    ardoino nano ile sıcaklık ve nem takip sistemi yapan varmı bi yardımcı olun lütfen

  48. Eemre dedi ki:

    merhabalar…
    Yapmak istediğim devre,
    DHT11 sıcaklık ve nem sensörünün 24 C sıcaklığı algıladıktan sonra Röleyi harekete geçirerek yani ‘HIGH’ çalışmasını sağlamaktır. 24 C altındaki sıcaklıklarda ise ‘LOW’ olmasıdır.

    Devremin kesin ve net doğru olduğunu düşünüyorum bununla ilgili Seri Port haberleşmesinde sensörden sıcaklık değerleriyle ilgili haberleşme sağlamaktayım.
    Röle devresi için de deneyler yaptım ve röle çalışmakta.

    Forumunuzu dikkatle inceledim ipucu vermesi açısından ne LM35’le ne de SHT11’le yapılmış bir röle sürme konusu bulamadım. çözüme ulaştıktan sonra bu konuyu forumunuza da taşımayı düşünüyorum. Fakat Aşağıda kendi imkanlarımla oluşturduğum kodun çalışmasını sağlayamamaktayım. Daha doğru bir tabirle Sensör algıladığı sıcaklıktan sonra röleyi harekete geçirememekte. Kod şu şekildedir, 24 C ve üstü sıcaklığı algıladığında harekete geçen, ancak bu değer algılanamadığında harekete geçmeyen bir devre yapmak istiyorum.
    Not: 5V röleye yine 5V bir Fan bağlıdır

    #include // kütüphaneye ekledik
    #define DHT11PIN 2 // 2 pini DHT11 e bağlı
    int role = 13;
    dht11 DHT11;

    int sicaklik;
    void setup()
    {
    pinMode(role, OUTPUT);
    }

    void loop()
    {
    Serial.print(“Sicaklik (Celcius): “);
    Serial.println((float)DHT11.temperature, 2);

    sicaklik = DHT11.temperature;
    if(sicaklik >= 20)
    {
    digitalWrite(role,HIGH);
    }
    else if(sicaklik <= 20)
    {
    digitalWrite(role,LOW);

    }}

    • Eemre dedi ki:

      Durum bilgisi: Şu an devreye 5V’luk gerilim uyguladığımda devre sensörü tanımadan tam gaz çalışıyor

  49. Osman dedi ki:

    if DHT11 Celcius >= 24 Relay(HIGH);
    else Relay(LOW)

    Bana devreyi yazabilir misiniz? DHT11 24 dereceyi algıladığında Röle harekete geçecek.

  50. Osman dedi ki:

    platformunuz sınıfta kaldı gözümde.
    sayfayı çok daha ilgili ve bilgili kişiler yönetmeli

    • Ömer Koman dedi ki:

      desteğiniz için teşekkürler. saygı amacıyla yazının sahibinin sorulan sorulara cevap vermesini bekliyoruz, daha sonra diğer yazarlardan isteyen cevaplayabiliyor. forum kısmmımz daha aktif oradan da soru sorulması daha verimli oluyor. (ben kişisel olarak dht11 sensörünü verimli faydalı ve işe yarar kalitede bulmuyorum kullanmıyorum)

    • Coşkun Taşdemir dedi ki:

      Devreyi paket mi yapalım burada mı yersiniz?

  51. Nezgin dedi ki:

    merhabalar bende kendi projemde gsm shield kullanıyorum sıcaklık belli bi değere ulasınca role aktif ettim sensor sonuclarını sadece serial monitor yada lcd ekrandan değilde birde sms olarak almak istiyorum bunun için birde gsm shield kullanıyorum. sms olarak hazır metin gonderebiliyorum ama ben bunun yerine sensor cıkıslarını gondermek istiyorum yani metin değişken olacak bunu nasıl yapabiliirim yardımcı olursanız cok sevinirim.

  52. Nezgin dedi ki:

    #include
    #include “SIM900.h”
    #include
    #include “sms.h”
    SMSGSM sms;
    int numdata;
    boolean started=false;
    char smsbuffer[160];
    char n[20];

    dht11 DHT11;

    #define DHT11PIN 8
    int deg = 0;
    int led1 = 13;
    int led2 = 12;
    void setup()
    {
    Serial.begin(9600);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    }
    void loop()
    {
    int chk = DHT11.read(DHT11PIN);

    Serial.print((float)DHT11.humidity, 2);
    Serial.print(“,”);

    Serial.print((float)DHT11.temperature, 2);
    Serial.println();
    delay(2000);
    deg=(float)DHT11.temperature;

    if (deg 22.00)
    {
    digitalWrite(led2, HIGH);
    delay(1000);
    digitalWrite(led1, LOW);
    delay(1000);

    Serial.begin(9600);
    Serial.println(“GSM Shield testing.”);
    if (gsm.begin(2400)){
    Serial.println(“\nstatus=READY”);
    started=true;
    }
    else Serial.println(“\nstatus=IDLE”);

    if(started){

    if (sms.SendSMS(“0123456789”, “Arduino SMS”))
    Serial.println(“\nSMS sent OK”);
    }}}
    kodun hepsini yazdım kullanmak isteyen arkadaslar alabilsin diye
    algoritmamın mantıgı kısaca ;iki saniyede bir ölçüm alacak referans değerimden sonra yeşil led sonp kırmızı led aktif olacak ve sms atma protokolüne girecek ve girilen numaraya sms atacak delay yada baska bişey eklemedim o yuzden mesaj atma işlemi sıcaklık normal değerlere ulasnca duracak rolelerim elime ulaşmadığı için şimdilik ledlerle test yapıyorum malzemeler ulasıncada rolelerle yapacam devreyi işin en kolay kısmı burasıydı sanırım.

  53. Ömer Koman dedi ki:

    şu değişkeni tanımla
    string mysmsmsg

    sondaki
    if(started){
    if (sms.SendSMS(?0123456789?, ?Arduino SMS?))
    Serial.println(?\nSMS sent OK?);
    }

    kısmını aşağıdaki gibi değiştirirsen duruma göre değişen sms atmış olursun
    mysmsmmsg=(float)DHT11.temperature;
    if(started){
    if (sms.SendSMS(?0123456789?,mysmsmsg))
    Serial.println(?\nSMS sent OK?);
    }

    • Hakan Mutlu dedi ki:

      Merhaba Ömer bey,bir uygun fiyatlarla toplu sms sitesi buldum.
      bu sitede ki api kodlarını ile http post api leri kullanarak nasıl entegre edip kendimize sms gelmesini sağlayabiliriz. tüm yorumları okudum. çok zorlandım. yardımcı olacak birisi var ise yorum yapabilir mi?

  54. Nezgin dedi ki:

    kodları dediğiniz gibi yapıp derlediktern sonra denedim fakat bu defa da bana “mysmsmsg” diye mesaj gonderiyo yani => mysmsmmsg=(float)DHT11.temperature satırı işlenmemiş hatam nerde farkedemiyorum.

  55. mehmet dedi ki:

    iyi günler hesapladığım açı değerlerini pot ile okumak istiyorum arduino’da .Potu açı ölcer olarak kullanacağım pot kaç derece dönebilir? nasıl kod yazabilirim? yardımcı olabilir misiniz?

  56. mehmet dedi ki:

    pot 300 derece dönebiliyor diye biliyorum bu 360 yazınca yanlış hesaplanmış olmaz mı ? hesapladığım açı değerlerine göre pottan okuyup hesapladığım açıya göre döndüreceğim ve açısal konuma gelecek.

  57. Nezgin dedi ki:

    sorunum hala devam ediyo farklı yollar denedim ama basaramadım hala yardımınızı bekliyorum aydınlatın beni lütfen:)

  58. esma dedi ki:

    sıcaklık ve nem ölçer devreyi sht 11 ile tasarladık. ölçümler yapılıyor. ayrıca ortalama ve max min değerleri bulup lcd ye yazdrmak istiyoruz. sensörde ölçülen değeri bir diziye atarak max ve min değerleri ortalama değerleri bulmaya çalıştık fakat sorun yaşadık. hem ilk ortalama değer ‘inf’ olarak çıktı veriyor. bir sonraki değere geçerken de satır sonundan yazdığı için ne yazdığını göremiyoruz. yardımcı olursanız çok sevinirim.

    • Ömer Koman dedi ki:

      mantığı şöyle kurun bir min için bir max için değer tut okuduğun değer minden küçükse min değeri güncelle maxdan buyukse de max ı guncelle bunu böyle halletmişindir zaten. geriye ortalama kalıyor son okunan dğeri saklarsın bir sonraki ölçüm peryodunda son ukuduğunla önce okuduğunu toplarsın 2 ye bölersin 🙂 butun minmax ve ortalam değikenlerin tanımı float veya double olsun ama

  59. Kaya dedi ki:

    Öncelikle Sayın Ömer KOMAN hocam sorum size olacaktır.
    Benim üzerinde çalışmış olduğum arduino ile havadaki nem ölçümü üzerinde bir proje bulunuyor ve ben bu projemi tamamladım lcd ekranda değeri görüntülüyor sadece C# bağlantısı kaldı.
    Nem sensörü aktif halde çalışıyor şuanda ama ben bu projemi C# koduyla çalıştırmak istiyorum.
    Bu konuda düşünceleriniz nelerdir fikrinizi almak ve bu konuda kısa sürede yardımınızı bekliyorum şimdiden teşekkür ederim.

    • Ömer Koman dedi ki:

      bu sayfadaki yazıyı ve c# kodları kullanmanıza engel bir şey yok. hepsi denenmiştir kullanın hayrını görün kolay gelsin. sorun çıkarsa buradan yazın yine nerede hata veriyor nerede takılıyorsunuz. acil ve acil olmayan hiç bir projeye destek verecek hiç vaktim olmuyor sitedeki yazılar veya forumda da çok güzel çözümler var. biraz araştırırsanız çok kısa sürede bitirebilirsinz projenizi…

  60. Samet dedi ki:

    Ben arduino ile sıcaklık ve nem oranına göre fan çalıştırma projesi yapıcam ama konrolleri c# la yazılmış bir arayüzde oranları (Sıcaklık ve Nem Oranları) görüp benim belirlediğim oranlara göre fan çalışacak.Yardım edebilecek birileri varmı acaba.

    • Ömer Koman dedi ki:

      sitede c# kulanımı ile ilgili yazılmış örnek var oraya bir bakın. yukarıdaki mevcut programı deneyip kurcalayarak ilerleyebilirsiniz fazla sürmez. foruma da sorabilirsiniz ayrıca…

  61. Yavuz Çopur dedi ki:

    Selamun aleykum ben arduıno kullanıyorum bi projem var ama cevabını bir türlü bulamıyorum. sensörün arduınoya nasıl baglıyacagımı vede kod olarak nasıl yacagımı bilmiyorum.

    Sorum: Yeşil ve Kırmızı renkte iki tane led var.İlk başta kırmızı olan led yanık. bu ledlerin yanına yanyana iki tane sönsör baglıyacagım. sensörlerin ‘her ikiside’ cisimi algıladıgında yeşil yanıcak.cisimi sönsörlerin önünden çektikten 5 saniye sonrada kırmızı led tekrar yanıcak.bu durumu sürekli yapıcak. YARDIM EDERSENİZ ÇOOOK BÜYÜK HAYIR DUASI ALIRSINIZ Teşekkür ederim şimdiden

  62. Gökcan Yıldız dedi ki:

    const int sagileri = 9;
    const int saggeri = 8;
    const int solileri = 12;
    const int solgeri = 13;
    const int solenable = 11;
    const int sagenable = 10;
    /*
    trigPin1 ve echoPin1 = soldaki uzaklık sensörümüz
    trigPin2 ve echoPin2 = öndeki uzaklık sensörümüz
    trigPin3 ve echoPin3 = sağdaki uzaklık sensörümüz
    */
    int trigPin1 = 6;
    int echoPin1 = 7;
    int trigPin2 = 4;
    int echoPin2 = 5;
    int trigPin3 = 2;
    int echoPin3 = 3;
    float uzaklik(int trigPin, int echoPin){
    float olcum;
    float cm;
    digitalWrite(trigPin, LOW);
    delayMicroseconds(5);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    olcum = pulseIn(echoPin, HIGH);
    cm= olcum /29.1/2;
    return cm;
    }
    void ileri(int hizsag, int hizsol){
    analogWrite(sagenable, hizsag);
    digitalWrite(sagileri,HIGH);
    digitalWrite(saggeri,LOW);
    analogWrite(solenable, hizsol);
    digitalWrite(solileri, HIGH);
    digitalWrite(solgeri,LOW);
    }
    void geri(int hizsag, int hizsol){
    analogWrite(sagenable, hizsag);
    digitalWrite(sagileri,LOW);
    digitalWrite(saggeri, HIGH);
    analogWrite(solenable, hizsol);
    digitalWrite(solileri, LOW);
    digitalWrite(solgeri, HIGH);
    }
    void dur()
    {
    digitalWrite(sagileri, HIGH);
    digitalWrite(saggeri, HIGH);
    digitalWrite(solileri, HIGH);
    digitalWrite(solgeri, HIGH);
    }
    void setup(){
    pinMode(sagileri,OUTPUT);
    pinMode(saggeri,OUTPUT);
    pinMode(solileri,OUTPUT);
    pinMode(solgeri,OUTPUT);
    pinMode(sagenable,OUTPUT);
    pinMode(solenable,OUTPUT);
    pinMode(trigPin1, OUTPUT);
    pinMode(echoPin1,INPUT);
    pinMode(trigPin2, OUTPUT);
    pinMode(echoPin2,INPUT);
    pinMode(trigPin3, OUTPUT);
    pinMode(echoPin3,INPUT);
    }
    void loop(){
    while( uzaklik(trigPin2, echoPin2 ) 10 ){ // soluna bak
    ileri(150,0); // engel yoksa sola dön
    delay(500); // 90 derece dönene kadar geçecek süre. Bu süreyi kendinize göre ayarlayın
    dur(); // dur
    delay(1000);
    }else {if(uzaklik(trigPin3, echoPin3) > 10 ){ // sol dolu ise sağa bak
    ileri(0,150); // engel yoksa sağa dön
    delay(500); // 90 derece dönene kadar geçecek süre. Bu süreyi kendinize göre ayarlayın
    dur(); // dur
    delay(1000);
    }else { // sağ ve solda engel varsa geri gidip dönelim
    geri(100,100);
    delay(1000);
    ileri(150,0);
    delay(500);
    dur();
    delay(1000);
    }

    hocam labirent çözen robot yapıcam programım bu ama projeyi derlerken arduınoda – ‘ Proje.ino:90:1: error: expected ‘}’ at end of input ‘ hatası alıyorum bu ne oluyor ve çözümünü nasıl yardımcı olursanız sevinirim.

  63. Ömer Koman dedi ki:

    yazıların altını alakasız sorularla işgal etmeyin foruma gelin sorun hayret birşey.

  64. Gökcan Yıldız dedi ki:

    Foruma tıklıyorum nereden soracağımı bilmiyorum yardımcı olursanız oradan sorarız.

    • Ömer Koman dedi ki:

      üye olacaksınız ve sağda start discussion butonuna basıp. konu başlığı ve açıklamalarını kodunuz koyup sorunuzu sorabılırısnız..

  65. Burak Kahraman dedi ki:

    Merhaba, biz sıcaklık sensörü tasarlamayı düşünüyoruz nasıl yapacağımız hakkında yardıma ihtiyacımız var. Kafamızdaki plan arduino ile led ekrana dereceyi yazdırıp,belirli aralıklarda (5-10 derece) farklı renkte ledler yakmak istiyoruz.Mesela 15 derece iken sarı, 30 derece iken kırmızı gibi. Yardımlarınız için şimdiden teşekkür ederiz

    • Ömer Koman dedi ki:

      dht11 sensoru alın unoyu alın 3 adet veya kaç tane lazımsa ledi alın yukarıdaki kodu yazın dht11 i şekildeki gibi bağlayıp örneği çalıştırın, çalıştırabildiysenız sonra 3 ledi bağlayın kodunuzda bu ledleri yakmaya çalışın yapamazsanız forum kısmına geliniz oradan sorunuz.

  66. HAKKI ÖZKAN dedi ki:

    Hocam merhaba yukarıdaki verdiğiniz kod ile sensörümden ölçüm alabiliyorum 5110 ekranıma aldığım sıcaklık değerini yazdırmayı denedim bunun için birakaç satır kod yazdım ama doğru birşekilde aktaramıyorum serial monitordaki değeri 5110 lcd ekranıma kodlarımı bir kontrol edermisiniz.
    // Arduinoturkiye.com DHT11 Test Programı
    // Yazar: Joseph Dattilo (Virtuabotix LLC) – Version 0.4.5 (11/11/11)
    // Düzenleme: İsmail BUÇGÜN
    #include
    #include // dht11 kütüphanesini ekliyoruz.
    #define DHT11PIN 2 // DHT11PIN olarak Dijital 2’yi belirliyoruz.
    dht11 DHT11;
    LCD5110 myGLCD(8,9,10,11,12);
    extern uint8_t SmallFont[];
    extern uint8_t MediumNumbers[];
    extern uint8_t BigNumbers[];

    int sicaklik = 0;
    void setup()
    {
    pinMode(2, INPUT);
    pinMode(7, OUTPUT);
    digitalWrite(7,HIGH);

    myGLCD.InitLCD();
    myGLCD.setContrast(60);
    Serial.begin(9600); // Seri iletişimi başlatıyoruz.
    Serial.println(“Arduinoturkiye.com DHT11 Test Programi”);
    }

    void loop()
    {
    myGLCD.clrScr();
    myGLCD.setFont(SmallFont);
    myGLCD.print(“SICAKLIK:”,14,3);
    sicaklik = analogRead(sicaklik);
    sicaklik = map(sicaklik,0,1023,0,100);
    myGLCD.setFont(BigNumbers);
    myGLCD.printNumI(sicaklik,25,20);
    // Bir satır boşluk bırakıyoruz serial monitörde.
    Serial.println(“\n”);
    // Sensörün okunup okunmadığını konrol ediyoruz.
    // chk 0 ise sorunsuz okunuyor demektir. Sorun yaşarsanız
    // chk değerini serial monitörde yazdırıp kontrol edebilirsiniz.
    int chk = DHT11.read(DHT11PIN);

    // Sensörden gelen verileri serial monitörde yazdırıyoruz.
    Serial.print(“Nem (%): “);
    Serial.println((float)DHT11.humidity, 2);

    Serial.print(“Sicaklik (Celcius): “);
    Serial.println((float)DHT11.temperature, 2);

    Serial.print(“Sicaklik (Fahrenheit): “);
    Serial.println(DHT11.fahrenheit(), 2);

    Serial.print(“Sicaklik (Kelvin): “);
    Serial.println(DHT11.kelvin(), 2);

    // Çiğ Oluşma Noktası, Dew Point
    Serial.print(“Cig Olusma Noktasi: “);
    Serial.println(DHT11.dewPoint(), 2);

    // 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak.
    delay(2000);

    • Ömer Koman dedi ki:

      elimde 5110 lcd yok deneyemem şu an. 5110 lcd yi daha önce kullanıp denedinizmi bilmiyorum önce onu bir deneyin ekrana yazdığınız mesajlar yerine dht11 programındaki mesajları yollayacaksınız. şuradaki 5110 örneğini bir deneyin http://www.avdweb.nl/arduino/hardware-interfacing/nokia-5110-lcd.html yazıda 5110 lcd lerin pek iyi çalışmadığından bahsedilmiş ekran bağlantı noktlarında sorun çıkabiliyormuş…

  67. Arif dedi ki:

    ben gaz sensör devresi yapmak istiyorum bilgi verebilir misiniz

  68. mesut dedi ki:

    Direnç kullanmadan devreyi arduino ile gerçekleştirmenin bir yolu var mı acaba?
    Ya da kullanmazsak ne olur?

    • Ömer Koman dedi ki:

      direnç gerekiyor. burada sensorun data çıkışı ile +5v arasına direnç konması lazım bu tipteki bağlantılarda sensorun çıkışı dijital olduğu için çıkışta 1-0-1-1-0-0 gibi bir veri akışı olur sensor çıkışına eğer o dirençi koymazsan sensor çıkışı 1 olduğu durumlar oluşmaz. o direnç sayesinde sensorun çıkışı hızlı bir şekilde 1 olur. pull up yani yukarı çekme dirençi deniyor buna. sorana kadar bunu denesen daha çabuk öğrenirdin aslında

  69. Nurullah dedi ki:

    Merhabalar bu ise yeni merak saldim simdi dht11 ucuz demisiniz fiyati 35 tl daha ucuz olcum araligi yuksek ve dogruluk yuzdesi yuksek bi sensor onerebilirmisiniz bide lcd ekranim 2*8 olarak yapabilirmiyim saygilar

  70. erkan dedi ki:

    iyigünler hocam bu dht sensörü lle ölçülen değeri 2×16 lcd ye aktarmak için nasıl bir yol enerim yardımınız için şimdiden teşekkürler hocam

    • Ömer Koman dedi ki:

      sitemizdeki 2×16 lcd kullanımı yazılarını inceleyin o programları kurun buradaki dht kodunu ekleyin…

  71. emre karadere dedi ki:

    merhaba hocam benim projem arduino nano ile dht11 ve mq7 sensörlerini kullanarak fan çalıştırma yyaklaşık 1 aydır ugraşıom ama bi arpa yolu bile katedemedim yardımcı olabilirmisiniz bu konu hakkında ? iyi çalışmalar şimdiden teşekkürler

    • Ömer Koman dedi ki:

      yardımcı olamam vaktim yok ama seçtiğin sensorleri tek tek çalıştır sonra bunları birer birer tek programda birleştirmeye çalış olmazsa foruma gel oraya da birleştirdiğin programı koy.

  72. Remzi ÇAKICI dedi ki:

    Merhabalar hocam.
    DHT11 sensör ile hem ısıyı hem nem değerlerini okuyabiliyoruz fakat uzun zaman araştırmalar yapmama rağmen hem ısıyı hem nemi kontrol eden bi skechi bulamadım. Konu hakkında yardımcı olabilirmisiniz. Şimdiden teşekkür ederim..

    • Ömer Koman dedi ki:

      nemi kontrol etmek zor, nem çoksa hem ortamı ısıtacaksınız hemde havalandırcaksınız. nem azsa ortama nem verecek bir duzeniniz olmalı belkide suyu ısıtıp ortamde nemin yukselmesini sağlayacaksınız. sıcaklık kontrolu daha kolay buna göre ilerleyin işte. foruma gelin sorun…

  73. ugur dedi ki:

    Hocam
    bu devreyi çalıştırdım fakat noktadan sonraki hassasiyeti gösterebilmemiz için ne yapabiliriz.saygılarımla

  74. ugur dedi ki:

    Hocam özür dilerim bir türlü virgülden sonrasını getiremedim. Hassas ölçüm yapabilmek adına sanırım kütüphane içerisinden değiştirmek gerek ama nasıl bir fikir verebilir misiniz?
    saygılar

  75. Ömer Koman dedi ki:

    yukarıdaki programda zaten noktadan sonra 2 hane gösteriliyor nesi yapamıyorsun
    Serial.print(“Sicaklik (Celcius): “);
    Serial.println((float)DHT11.temperature, 2);

    yukarıdaki programı birebir yaz değişken tiplerini değiştirme.

  76. ugur dedi ki:

    Hocam demek istediğim. örnek değer okuyorum 20C sonra ısıya tabi tuttuğum zaman 20,3-20,5 gibi değil de 20c den 21 oluyor , noktadan sonraki değerler her zaman sıfır bunu demeye çalışmıştım.
    bir süre siteye giriş sağlayamamıştım kusura bakmayın!!

    • Ömer Koman dedi ki:

      programını koy bakalım yazdıklarımı hiç okumamışın yada çok dikkatsizsiniz…

      • ugur dedi ki:

        Hocam sadece lcd ekledım. 30.00C-31.00C-32.00C olarak artıyor. 31.15 gibi artma veya düşme olmuyor. noktadan sonra hep sıfır hocam burasını çözemedim.
        saygılarımla

        // Arduinoturkiye.com DHT11 Test Programı
        // Yazar: Joseph Dattilo (Virtuabotix LLC) – Version 0.4.5 (11/11/11)
        // Düzenleme: İsmail BUÇGÜN
        #include

        #include // dht11 kütüphanesini ekliyoruz.
        #define DHT11PIN 2 // DHT11PIN olarak Dijital 2’yi belirliyoruz.

        //const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
        //const int analogOutPin = 5; // Analog output pin that the LED is attached to
        LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
        dht11 DHT11;
        float deg = 0;
        float deg1 = 0;

        void setup()
        {
        lcd.begin(16,2);
        Serial.begin(9600); // Seri iletişimi başlatıyoruz.

        pinMode(13, OUTPUT);
        }

        void loop()
        {
        // Bir satır boşluk bırakıyoruz serial monitörde.
        Serial.println(“\n”);
        // Sensörün okunup okunmadığını konrol ediyoruz.
        // chk 0 ise sorunsuz okunuyor demektir. Sorun yaşarsanız
        // chk değerini serial monitörde yazdırıp kontrol edebilirsiniz.
        int chk = DHT11.read(DHT11PIN);
        deg=((float)DHT11.temperature)/1000;
        deg1=deg+1;

        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print(“NEM ORANI=”);
        lcd.setCursor(11,0);
        lcd.print(deg1);

        // lcd.print((float)DHT11.humidity, 2);

        lcd.setCursor(0,1);
        lcd.print(“SICAKLIK=”);
        lcd.setCursor(10,7);
        lcd.print((float)DHT11.temperature, 2);

        if (deg >= 27.00){
        // turn LED on:
        digitalWrite(13, HIGH);
        }
        else {
        // turn LED off:
        digitalWrite(13, LOW);
        }

        delay(1500);
        // Sensörden gelen verileri serial monitörde yazdırıyoruz.

        Serial.print(“Nem (%): “);
        Serial.println((float)DHT11.humidity, 2);

        Serial.print(“Sicaklik (Celcius): “);
        Serial.println((float)DHT11.temperature, 2);

        Serial.print(“Sicaklik (Fahrenheit): “);
        Serial.println(deg1 );

        Serial.print(“Sicaklik (Kelvin): “);
        Serial.println(DHT11.kelvin(), 2);

        // Çiğ Oluşma Noktası, Dew Point
        Serial.print(“Cig Olusma Noktasi: “);
        Serial.println(DHT11.dewPoint(), 2);

        // 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak.
        delay(2000);

        }

  77. ali dedi ki:

    16*2 lcd ekranımda arka aydınlatma kullanınca lm35 sıcaklık sensöründen gelen verileri yanlış okuyor. 30lardayken 45e vs çıkıyor. geri kalan bütün verileri normal yazıdrmaya devam ediyor ama arka aydınlatmayı kullanınca niye sapıtıyor anlayamadım..

    • Ömer Koman dedi ki:

      genel olarak devrende besleme problemi var sanırım 5vda aşırı voltaj düşümü oluyor lcd aydınlatmasına direk5v bağlanmaz arada 10-20ohm gibi bir dirençle seri bağlamak lazım. yada lm35 bacak bağlantılarını kontrol et

  78. Umut Özgür ÇETİN dedi ki:

    Bende uno ile dht11 i okuyorum fakat değerler tam sayı olarak geliyor örnk :24.00 ondalıklı değer gelmiyor hiç bir şekilde bir ayarı mevcut mu acaba yoksa çok hassas olmadığı için mi bu şekilde?
    teşekkürler

  79. Güray Tonguç dedi ki:

    Merhaba Ömer Bey,
    Bu sayfada yer alan tüm içeriği okudum, sabrınızdan ve yardım etme gayretinizden dolayı size teşekkür etmek istedim. İyi günler.

  80. Recep KANIK dedi ki:

    merhabalar ben DHT11 ile sıcaklık ve nem ölçücem ve ölçülen değeri İ2C LCD’de göstericem yardımcı olursanız sevinirim

    • Ömer Koman dedi ki:

      hangi i2c lcd de göstereceksenin onun kutuphanesi ni ve yazılmış kod örneğini bulursanız işiniz zor değil…

  81. orhan dedi ki:

    dht11 sensörü ile sıcaklık degerlerini okuyorum
    bu okunan degerleri word ortamını aktarıp nasıl kayıt edebilirim
    yardım ederseniz çok sevinirim

    • Ömer Koman dedi ki:

      orhan sen bu verileri zaten seriporttan pc ye yolluyorsun onu yaptın mı? cunku bizim işimiz orada bitiyor ! verinin arduino dışında sunulması bizim konumuz değil ama sana fikir olması açısından şöyle diyeyim sitede c# la seriporttan okunan verileri işleyebileceğin örnek var pc tarafında c# içinden bu okuduklarını word dosyası şeklinde kaydetme yollarını deneyebilirsin.
      bu işler hep böyledir tam arduino öğenmeye başlarsın baktın olmuyor birde pc de c# ogrenmen gerekecek şimdi de hay allah…

  82. necati dedi ki:

    Selamın aleyküm abi ben oda sıcaklığı kontrolü yaptım bunada belli bir dereceye gelince motorun dönmesini istiyorum bana bi yardimci olursaniz çok sevinirm😇

    • Ömer Koman dedi ki:

      aleykum selam kardeşim, sitede motor surucu yazısı vardı oradan motor surme kodunu bu programa ekleyiverirsin ama sana zor gelebilir, sen eğer dereceyi okuduysan mesela hedeflediğin dereceden buyuk bir sıcaklık geldiyse serialmonitrode once bir ekrana mesaj yolla bunu yapman 15sn filan surecektir hatta şoyle bir satır yazacaksın “eğer sıcaklık > hedef_sıcaklık ekrana şunu bas” bunu yaptıysan sistemin mantığını anlamışın demektir. şimdi motor surmek için istersen bir transistorle role sur(roleye motor bagla) istersen bir ledi sur yontem aynı farketmez yazacağın kodda motoru surdugun transıtor veya ledi bağladığın digitalpini HIGH yapacaksın olacak bitecek. allahın ismiyle sitemize gelen musluman kardeşimiz çalışkan bir mumindir sonucta, sag ust kosedeki arama alanına motor ve role diye yazarak bu sitedeki bu konuda yazılmış yazıları şıp diye bulacaktır maşşalah. hatta bununla da yetinmeyip google muhteremden arduino motor driver diye de aratma azmini gosterecektir inşallah. allahu ekber, hadi goreyım aslanımı…

  83. necati dedi ki:

    // LCD Kütüphanesini içeri al
    #include
    // LCD Kütüphanesini bağlanan pin’ler ile başlat.
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    int SicaklikPin = 0; // LM35 sensöre bağlı pin (Analog 0)
    int OkunanDeger; // Analog 0’dan okunacak değer (0-1023) LM35’in vereceğı en büyük okuma değeri 1V=205 olacak.
    int Sicaklik; //

    void setup() {
    // LCD’yi 16 sütün, 2 satır olarak başlat
    lcd.begin(16, 2);
    // Birinci satıra “Oda Sıcaklığı:” yaz.
    lcd.print(“Oda sicakligi:”);
    }

    void loop() {

    OkunanDeger = analogRead(SicaklikPin);
    Sicaklik = map (OkunanDeger, 0, 205, 0, 100); //(0-1v 0-205 okuma değerini, 0-100 sıcaklığa dönüştür.)

    // İmleci 2. satıra getir.
    // Not: Satır: 0, Satır 2: 1 olarak geçer. Satır sayıları 0’dan başlar.
    lcd.setCursor(0, 1);
    lcd.print(Sicaklik); // hesaplanan sıcaklığı yazdır.
    lcd.print(” derece”); // devamına birimi olan derecece yaz.
    delay (1000); // Sonraki ölçümden önce 1 saniye bekle.

    }
    Buna eklermisin abi okuldan performans aldim ugrasiyorum ama yapamiyorum bide yapabilirken baglantilari atabilirmisin sinavlara denk gelmed n yapasim var

    • Ömer Koman dedi ki:

      programına 3 satır ekleyeceksin neresi oldugunu kendin bul artık.
      pinMode(13, OUTPUT);
      digitalWrite(13,LOW);
      if (Sicaklik>=30){digitalWrite(13,HIGH);}

      zerre kadar emeğin olsun istiyorum projende… başka bişey sorma cevap vermeyeceğim

  84. sümeyra dedi ki:

    iyi günler..tek arduino için hem nem hemde su seviyesi sensörü kullanabilir miyim? 5v girişi 2si için nasıl kullanırım?

    • Ömer Koman dedi ki:

      tek arduino için bir çok sesnor aynı anda kullanılabılır yeterki pin çakışması ve kullanmanma yontemlerı bırbırlerı ıle uyumlu olsun.
      her sensoru tek tek kendi kodları ile test edın sonra hepsini birleştirin
      forum agelin sorun daha hızlı ılerlersınız…

  85. bülent dedi ki:

    Merhabalar

    ısı ve nem sensörüyle ölçüm yaptığımızda sürekli 300.20 derece gibi değerler alıyoruz.Başka kodları denediğimizde de bu sorunun devam ettiğini gördük. yardımcı olabilirseniz sevinirim…

  86. nihat dedi ki:

    Merhaba. ben mantar üreticisiyim ve bunun için arduino ile ısı ve nem sensörü devresi yapmak istiyorum. Bunun için şu şekilde 3 odam var ve bu odaların her birine dht11 sensörü koyacağım. tek lcd üzerinden bütün değerleri görmek istiyorum. yani şu şekilde ;
    1. oda yazısı yazacak sonra — o odanın nem ve ısı derecesi yazacak. 3 saniye sonra.
    2. oda yazısı yazacak sonra — o odanın nem ve ısı derecesi yazacak. 3 saniye sonra.
    3. oda yazısı yazacak sonra — o odanın nem ve ısı derecesi yazacak. 3 saniye sonra başa dönecek.

    bunun yazılımı bana lazım yardımcı olabilirseniz çok sevinirim.

    • Ömer Koman dedi ki:

      hazır projemiz yok yada ısmarlama proje yapamıyoruz, foruma sorun ama ucretıyle yapmak ısteyenlere aracılık yapamıyoruz kımseye garanti veremiyoruz sahtekarlık olabilir.
      facebookta arduino gruplarında benzer mantar yetiştiricileri ve kuluçka makınesi yapanlara denk geldim belki kodunu paylaşmak isteyen olabilir.

      yazıdaki kodu ve bağlantıları kendiniz yapabilirsenız aslında ve bunu forumda takıldıgınız yerı sorarak kodu paylaşarak ılerlersenız yardımcı olan cıkacaktır.

      kolay gelsin.

  87. Ahmet dedi ki:

    burada kullanılan sensörle bu aynımı acaba ben bundan almıştım.Sizin sensörün 4 bacağı var benimkinde 3 bacak var
    http://market.projehocam.com/urun/dht11-isi-nem-sensoru-kart/

    • Ömer Koman dedi ki:

      sensoru bir pcb uzerıne koymuşlar, zaten kullanılan 3 bacak var sorun olmaz. buradaki şemada dırenç kullanılmış o direnci kullanmayın aldıgınız sensorlu pcb uzerınde dırenc var zaten.

  88. Bayram Ataş dedi ki:

    bir türlü yapamadım gitti arduino hakkında doğru düzgün bişey bilmiyorum uğraştım ama hata verip duruyor hatalar bu şekil yardımcı olursanız sevinirim

    D:\arduino\arduino-1.6.9\Projeler\zamanSaat_dereceNem\zamanSaat_dereceNem.ino: In function ‘void setup()’:

    zamanSaat_dereceNem:36: error: expected unqualified-id before ‘.’ token

    dht11.begin();

    ^

    zamanSaat_dereceNem:37: error: ‘class LiquidCrystal_I2C_AvrI2C’ has no member named ‘init’

    lcd.init();

    ^

    zamanSaat_dereceNem:45: error: ‘dht’ was not declared in this scope

    float h = dht.readHumidity();

    ^

    D:\arduino\arduino-1.6.9\Projeler\zamanSaat_dereceNem\zamanSaat_dereceNem.ino: In function ‘void loop()’:

    zamanSaat_dereceNem:57: error: ‘t’ was not declared in this scope

    lcd.print(t);

    ^

    zamanSaat_dereceNem:64: error: ‘h’ was not declared in this scope

    lcd.print(h);

    ^

    exit status 1
    expected unqualified-id before ‘.’ token

    • Hacı Bayram Ata dedi ki:

      kod da bu
      byte termometre[8] = //ikon termometre
      {
      B00100,
      B01010,
      B01010,
      B01110,
      B01110,
      B11111,
      B11111,
      B01110
      };

      byte sudamlacigi[8] = //ikon su damlacığı
      {
      B00100,
      B00100,
      B01010,
      B01010,
      B10001,
      B10001,
      B10001,
      B01110,
      };
      #include “Wire.h”
      #define DS1307_ADDRESS 0x68
      #include “dht11.h”
      #define DHT11PIN 2
      dht11 DHT11
      #include
      #include
      #define DHTTYPE DHT11
      LiquidCrystal_I2C_AvrI2C lcd(0x27 , 16 , 2);
      DHT11 dht11(DHTPIN, DHTTYPE);
      void setup(){
      Wire.begin();
      dht11.begin();
      lcd.init();
      lcd.begin();
      lcd.backlight();
      lcd.setCursor(0,0);
      lcd.print(“www.arduinom.org”);
      lcd.createChar(1,termometre);
      lcd.createChar(2,sudamlacigi);
      delay(2000);
      float h = dht.readHumidity();
      float t = dht.readTemperature();
      }

      void loop()
      {

      lcd.setCursor(0, 0);
      lcd.print(“www.arduinom.org”);
      lcd.setCursor(1, 1);
      lcd.write(1);
      lcd.setCursor(3, 1);
      lcd.print(t);
      lcd.setCursor(5, 1);
      lcd.print((char)223); //derece karakteri
      lcd.print(“C”);
      lcd.setCursor(9, 1);
      lcd.write(2);
      lcd.setCursor(11, 1);
      lcd.print(h);
      lcd.print(“%”);
      delay(2000);
      lcd.clear();
      printDate();
      delay(2000);
      lcd.clear();
      }

      byte bcdToDec(byte val) {
      return ( (val/16*10) + (val%16) );
      }

      void printDate(){

      Wire.beginTransmission(DS1307_ADDRESS);
      byte zero = 0x00;
      Wire.write(zero);
      Wire.endTransmission();
      Wire.requestFrom(DS1307_ADDRESS, 7);
      int second = bcdToDec(Wire.read());
      int minute = bcdToDec(Wire.read());
      int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
      int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday – Saturday
      int monthDay = bcdToDec(Wire.read());
      int month = bcdToDec(Wire.read());
      int year = bcdToDec(Wire.read());
      lcd.clear();
      //print the date EG 3/1/11 23:59:59
      lcd.setCursor(1,0);
      lcd.print(“Tarih: “);
      lcd.print(monthDay);
      lcd.print(“/”);
      lcd.print(month);
      lcd.print(“/”);
      lcd.print(year);
      lcd.setCursor(0,1);
      lcd.print(” Saat :”);
      lcd.print(” “);
      lcd.print(hour);
      lcd.print(“:”);
      lcd.print(minute);
      lcd.print(“:”);
      lcd.print(second);
      delay(1);

      }

    • Ömer Koman dedi ki:

      kodun hata mesajlarına göre bir çok yazım hatası veya eksik tanımlamadan kaynaklanan sorunlar yaşıyorsunuz. bu her zaman olabilir internetteki çoğu kod her zaman çalışmayabilir. adım adım ve anlayarak ilerleyin hatalı kodları duzeltmeye çalışarak omrunuz geçer bıktırır insanı.
      önce yazımızdaki kodu ve açıklamalara göre programı yazın ve en azından sıcaklığı serialmonitorden görün böylece sensorun bağlantılarını ve çalışmasını öğrenmiş olursunuz.
      daha sonra saat ve sonra i2c lcd kodunuzu test edersiniz.
      adım adım oluyor bu işler kopyala yapıştı da bır yere kadar…

      • Hacı Bayram Ata dedi ki:

        benim anladığım ladarıyla i2c kütüphanesinde dht 11 i ekleyince hata veriyor bi uyuşmamazlık var ama anlamadım evet dediğiniz doğru kopyala yapıştır olmuyor ama ben genelde aldığım kodlarda sıkıntı çıkıyor illaki bi yerlerini düzeltmek zorunda kalıyor baştan bişeyleri yapamıyorum ama olanları değiştirebiliyorum

        • Ömer Koman dedi ki:

          i2c ile ne kullanıyorsanız onu tek olarak ayrı bir kodda test edin kodun çalıştıgından eminsenız bırleştirin

  89. melih dedi ki:

    Ah be kardeşim open source işlerle uğraşıyosun, libi rarlayıp koymussun. tar ziple vs de rarlamasan olurdu.

  90. Ali dedi ki:

    merhaba arkadaşlar android Telefondan arduino ya 1234 desimal sayı gönderiyorum gelenVeri degişkenine 49 50 51 52 olarak yükleniyor.bu sorunu nasıl çözebilirim
    yardımcı olacak arkadaşlara şimdiden teşekkür ederim

    int gelenVeri = 0; // genel veriyi tutacak değişken
    void setup()
    {
    Serial.begin(9600); // Haberleşme baudrate hızı 9600
    pinMode(7,OUTPUT);
    }
    void loop()
    {
    if (Serial.available() > 0) {
    gelenVeri= Serial.read();
    Serial.println(gelenVeri); // gelen veriyi serial monitöre yaz
    }
    if(gelenVeri==1234){digitalWrite(7,HIGH);delay(1000);digitalWrite(7,LOW);}
    }

    • Ömer Koman dedi ki:

      telefondan gelen verinin ascii karşılığını görüyorsunuz, 48=0 49=1 50=2 … 57=9 oluyor. direk gelen sayıdan 48 çıkarırsanız gelen ascii değerin numerik karşılığını almış olursunuz ama bunları birde bulunduğu basamaga gore carpmanız lazım 4 haneli bişey geldıgını bılıyorsanız 1×1000+2×100+3×10+4 =1234 edecektir. yada string ten ıntegere donusum fonksıyonunu kullanırsınız (string.toInt)

      String inString = “”; // string to hold input

      void setup() {
      // Open serial communications and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
      ; // wait for serial port to connect. Needed for native USB port only
      }

      // send an intro:
      Serial.println(“\n\nString toInt():”);
      Serial.println();
      }

      void loop() {
      // Read serial input:
      while (Serial.available() > 0) {
      int inChar = Serial.read();
      if (isDigit(inChar)) {
      // convert the incoming byte to a char
      // and add it to the string:
      inString += (char)inChar;
      }
      // if you get a newline, print the string,
      // then the string’s value:
      if (inChar == ‘\n’) {
      Serial.print(“Value:”);
      Serial.println(inString.toInt());
      Serial.print(“String: “);
      Serial.println(inString);
      // clear the string for new input:
      inString = “”;
      }
      }
      }

  91. ali dedi ki:

    hocam zaman ayırıp cevap verdigin için teşekkür ederim hocam gelenveri degişkenin den 48 çıkarınca ascii değerin numerik karşılığını almış olduk 1234 yanlız sayılar birleşik degil ayrı ayrı geliyor ben 4 det degişken tanımlayıp ilk
    gelen 1.sayıyı D1 2. sayıyı D2 3.sayıyı D3 4.sayıyıda D4 yüklemek istiyorum hangi komutu kullanmam lazım
    1×1000+2×100+3×10+4 =1234

    • Ömer Koman dedi ki:

      her yeni sayı geldiğinde bir sayac olacak
      eger sayac 1 ise d1=gelensayi-48
      eger sayac 2 ise d2=gelensayi-48;
      eger sayac 3 ise d3=gelensayi-48;
      eger sayac 4 ise d4=gelensayi-48;

      int sonuc=d1×1000+d2×100+d3×10+d4

      bunu mu sordun hocam? 4 işlem ve basamaklar konusu ilkokul 2.sınıf ta gördük bunu.

      yada ornegını verdıgım kodu kullan stringden otomatık donusumde yapar

  92. ali dedi ki:

    merhaba hocam verdiginiz program derleme yaparken hata veriyor
    String inString = “”; // string to hold input
    void setup() {
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
    }
    // send an intro:
    Serial.println(“\n\nString toInt():”);
    Serial.println();
    }
    void loop() {
    // Read serial input:
    while (Serial.available() > 0) {
    int inChar = Serial.read();
    if (isDigit(inChar)) {
    // convert the incoming byte to a char
    // and add it to the string:
    inString += (char)inChar;
    }
    // if you get a newline, print the string,
    // then the string’s value:
    if (inChar == ‘\n’) {
    Serial.print(“Value:”);
    Serial.println(inString.toInt());
    Serial.print(“String: “);
    Serial.println(inString);
    // clear the string for new input:
    inString = “”;
    }
    }
    }

    hata
    exit status 1
    stray ‘\342’ in program
    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  93. Ömer Koman dedi ki:

    kullanıfıgınız karakterlerde sorun var turkçe karalter veya hatalı noktalama oldugu ıcın hata alıyorsunuz. sizdeki çıft tırnaklarda sorun var gibi duruyor.

  94. koray dedi ki:

    hocam ben makine mühendisliği öğrencisiyim bitirme tezi olarak bir ortamın sıcaklık ve nem değerlerini belirli aralıkta tutmak için Aurdino kullanabilir miyim malzemelerim ne olur yardımcı olabilir misiniz ?

    • Ömer Koman dedi ki:

      yukarıdaki projeyi yapabilrsiniz verileri saklamak için sd kart kullanabilirsiniz zaman bilgisini de yıne sitemizdeki rtc ds1302 yazısındaki kod ıle alıp karta zaman bilgisi ile beraber yazabilirsiniz eğer sıcaklık nem bilgisini online tutmak istiyorsanız bir esp8266 wifi modul ile ınternetteki thinspeak sitesine atıp grafik şeklinde de izleyebilirsiniz. bu konularda çok hazır orneği de web de bulmak mumkun arduinoda kod yazma alışkanlığınız yoksa en hızlı yoldan komutları ve yapının nasıl birşey oldugunu anlamaya çalışırsanız fazla uzatmadan projeyı bıtırebılırsınız. foruma da gelin

  95. Turgay OLGAY dedi ki:

    #include
    #include
    #include
    #include “SystemFont5x7.h”
    #include “Arial_black_16.h”
    #include “DHT.h”

    #define DHTPIN 2
    #define DHTTYPE DHT22
    DHT dht(DHTPIN, DHTTYPE);

    #define DISPLAYS_ACROSS 2
    #define DISPLAYS_DOWN 1
    DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);

    void ScanDMD()
    {
    dmd.scanDisplayBySPI();
    }

    void setup(void)
    {

    dht.begin();

    Timer1.initialize( 5000 );
    Timer1.attachInterrupt( ScanDMD );

    dmd.clearScreen( true );

    }

    void loop(void){
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(t) || isnan(h)) {
    byte b;
    // display some text
    dmd.clearScreen( true );
    dmd.selectFont(System5x7);
    for (byte x=0;x<DISPLAYS_ACROSS;x++) {
    for (byte y=0;y<DISPLAYS_DOWN;y++) {
    dmd.drawString( 2+(32*x), 1+(16*y), "Fail", 4, GRAPHICS_NORMAL );
    dmd.drawString( 2+(32*x), 9+(16*y), "Read", 4, GRAPHICS_NORMAL );
    }
    }
    }
    else {

    byte b;

    dmd.clearScreen( true );
    dmd.selectFont(System5x7);

    for (byte x=0;x<DISPLAYS_ACROSS;x++) {
    for (byte y=0;y<DISPLAYS_DOWN;y++) {
    dmd.drawString( 2+(32*x), 1+(16*y), "TEMP", 4, GRAPHICS_NORMAL );
    dmd.drawString( 2+(32*x), 9+(16*y), "(t)", 5,GRAPHICS_NORMAL );

    }
    } delay(2000);
    }
    }
    /*——————————————————————————-*/

    EKRANDA

    TEMP
    (t) F
    çıkıyor

    istediğim t ve h değişkenlerini P10 ekranında görmek
    Yardımınızı rica ediyorum

    ———————————————————————————

    • Ömer Koman dedi ki:

      p10 panel ıle ılgılı ornekler forumda var oraya bakmanız iyi olur. yukarıdaki lcd ile ılgılı bolumlerı cıkarın p10 a text yollayacak rutınde sıcaklık verılerınız yollayın. foruma gelin

  96. fatih dedi ki:

    Merhaba iyi günler Ömer bey. Ben bir kuluçka makinası yaptim. Makinada ds18b20 ısı dht11 nem sensörü ampul DC motor servisi motor kullandım. Sistem herturlu kodlara bakmama rağmen 3 4 saatte bir donuyor. Bazen 7 8 saatte bir donuyor ve bu donmayi dht11 den dolayı yaptığını düşünüyorum. Böyle sorun çıkaran bir sensörmüdur ? Nasıl bir düzeltme yapabilirim simdiden teşekkür ederim.

    • Ömer Koman dedi ki:

      arduıno projelerınde uzun surelı kullanımda bu tip şikayetler oluyor. bir çok neden olabilir çok basit bir bağlantı problemi veya akım çeken bir sensorun cevap vermemesi veya enerjı kesıntısı veya bır takım yakındakı motorların urettıgı parazıtlerın sistemi etkılenmesı ve daha akla gelmeyen bir çok problem olabılır. bunların tamamen kesmekde mumkun yada onemsız sevıyeye ındırmekde mumkun. oncelikle enerji prblemlerı ıle şebekeden veya havadan gelecek parazitleri kesmenız lazım bunun için guçlu bır enerjı altyapısı ve fıltreleme ıle başlamak lazım, havada gezen uzun kabloları kısaltın, sensorun kıtlenmesını bılemıyorum belkı bır serıçıkışla her rutın başlangıcında dışarıya bır satır verı yollayın ve bunu pc de loglayın problemın takılma noktasını tespit etmiş olursunuz. arduınoda ıyı ısenız watchdog kullanın sistemde bır kaç sanıyelık kesıntı olursa otomatık işlemciyi resetler ve herşey yenıden başlar kullanım ıcın bu reset suresınden once wd tımerı sıfırlamanız lazım sıfırlamazsanız sistem bunun bır kıtlenme oldugunu algılayıp otomatık reset atabılır. bu durumu ıyı yonetebılmenız lazım ılerı kod yazma becerısı gerektırebılır. foruma da gelın sorun

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal Ağlar