DS18B20 Dijital Sıcaklık Sensörünün Arduino ile Kullanımı

Çevreden veri toplamamızı gerektiren projelerimizde sıcaklık, nem, rüzgar, gürültü sensörleri gibi sensörlere ihtiyaç duyarız. Bu yazıda tek dijital pinle sıcaklık bilgisi sağlayan DS18B20 sıcaklık sensörünü anlatmaya çalışacağım. Yine yazının devamında birden fazla sensörden nasıl veri alınabileceği ile ilgili örnek bir program paylaşacağım.

Gerekli Malzemeler:

  1. 1 adet DS18B20 Dijital Sıcaklık Sensörü
  2. 1 adet 4.7k direnç
  3. Bağlantılar için kablo

Yukarıdaki resimdeki gibi bağlantıları (Tek sensör için bağlantılar bu şekilde, birden fazla sensörü de aynı şekilde farklı dijital pinlere bağlayabilirsiniz.) yaptıktan sonra aşağıdaki bağlantılardan OneWire kütüphanesini indirip yüklüyoruz. (Arduino>libraries klasörüne OneWire klasörünü kopyalıyoruz.) Tek sensör ve birden fazla sensör kullanılan 2 örnek program ile birlikte geliyor kütüphane. Bu 2 örnek programı da anlatmaya çalışacağım burada.

Tek Sensör için Örnek Program

// Arduinoturkiye.com DS18B20 Dijital Sıcaklık Sensörü Kullanımı
// Tek Sensör Örnek Programı
// Düzenleme: İsmail BUÇGÜN

#include <OneWire.h> // OneWire kütüphanesini ekliyoruz.

// Sıcaklık sensörünü bağladığımız dijital pini 2 olarak belirliyoruz.
int DS18S20_Pin = 2; 

// Sıcaklık Sensörü Giriş-Çıkışı
OneWire ds(DS18S20_Pin);  // 2. Dijital pinde.

void setup(void) {
  Serial.begin(9600); // Seri iletişimi başlatıyoruz.
}

void loop(void) {
  // temperature değişkenini sıcaklık değerini alma fonksiyonuna bağlıyoruz.
  float temperature = getTemp();
  // Sensörden gelen sıcaklık değerini Serial monitörde yazdırıyoruz.
  Serial.print("Sicaklik: ");
  Serial.println(temperature);
  // 1 saniye bekliyoruz. Monitörde saniyede 1 sıcaklık değeri yazmaya devam edecek.
  delay(1000);

}

// Aşağıdaki fonksiyon DS18B20 sıcaklık sensörümüzden gelen verileri
// Celcius cinsinden sıcaklık değerlerine çevirmek için kullanılıyor.
// Herhangi bir değişiklik yapmamız gerekmiyor.

float getTemp(){
  //returns the temperature from one DS18S20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
      return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE); // Read Scratchpad

  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }

  ds.reset_search();

  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;

  return TemperatureSum;

}

Çoklu Sensör için Örnek Program

// Arduinoturkiye.com DS18B20 Dijital Sıcaklık Sensörü Kullanımı
// Çoklu Sensör Örnek Programı
// Düzenleme: İsmail BUÇGÜN

#include <OneWire.h> // OneWire kütüphanesini ekliyoruz.

// 1. Sıcaklık sensörünü bağladığımız dijital pini 2 olarak belirliyoruz.
int DS18S20_1_Pin = 2;
// 2. Sıcaklık sensörünü bağladığımız dijital pini 3 olarak belirliyoruz.
int DS18S20_2_Pin = 3;
// 3. Sıcaklık sensörünü bağladığımız dijital pini 4 olarak belirliyoruz.
int DS18S20_3_Pin = 4;

// Sıcaklık Sensörleri Giriş-Çıkışları
OneWire ds1(DS18S20_1_Pin); // 1. sensör 2. Dijital pinde.
OneWire ds2(DS18S20_2_Pin); // 2. sensör 3. Dijital pinde.
OneWire ds3(DS18S20_3_Pin); // 3. sensör 4. Dijital pinde.

void setup(void) {
Serial.begin(9600); // Seri iletişimi başlatıyoruz.
}

void loop(void) {
  // 3 sensör için 3 farklı sıcaklık değişkeni oluşturup fonksiyonla bağlıyoruz.
  float temperature1 = getTemp(ds1); // 1. sensörden gelen sıcaklık değeri
  float temperature2 = getTemp(ds2); // 2. sensörden gelen sıcaklık değeri
  float temperature3 = getTemp(ds3); // 3. sensörden gelen sıcaklık değeri

  // Sensörlerden gelen sıcaklık değerlerini serial monitörde yazdırıyoruz.
  Serial.print("1.Sensor:");
  Serial.print(temperature1);
  Serial.print(" | ");
  Serial.print("2.Sensor:");
  Serial.print(temperature2); 
  Serial.print(" | ");
  Serial.print("3.Sensor:");
  Serial.print(temperature3); 
  Serial.println(" | ");
  // 1 saniye bekliyoruz. Monitörde saniyede 1 sıcaklık değerleri yazmaya devam edecek.
  delay(1000); 
}

// Aşağıdaki fonksiyon DS18B20 sıcaklık sensörümüzden gelen verileri
// Celcius cinsinden sıcaklık değerlerine çevirmek için kullanılıyor.
// Herhangi bir değişiklik yapmamız gerekmiyor.

float getTemp(OneWire sensor){
//returns the temperature from one DS18S20 in DEG Celsius

byte data[12];
byte addr[8];

if ( !sensor.search(addr)) {
   //no more sensors on chain, reset search
   sensor.reset_search();
   return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
   Serial.println("CRC is not valid!");
   return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
   Serial.print("Device is not recognized");
   return -1000;
}

sensor.reset();
sensor.select(addr);
sensor.write(0x44,1); // start conversion, with parasite power on at the end

byte present = sensor.reset();
sensor.select(addr);  
sensor.write(0xBE); // Read Scratchpad

for (int i = 0; i < 9; i++) { // we need 9 bytes
  data[i] = sensor.read();
}

sensor.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead / 16;

return TemperatureSum;

}

±0.5°C ölçüm hassasiyetine sahip DS18B20 sıcaklık sensörü ve röle devresi kullanarak dijital termostat yapabilir ya da sensörden aldığımız sıcaklık verilerini SD kart içerisinde depolayarak veritabanı oluşturabilirsiniz.

Ä°yi çalışmalar…

Kaynaklar:

Gerekli Olabilecek Bağlantılar:

Ä°smail

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

85 comments

  1. […] DS18B20 Dijital Sıcaklık Sensörünün Arduino ile Kullanımı 18 AÄŸustos 2012 // (0) yorum […]

  2. muhammet ali dedi ki:

    burdaki ÅŸemaya göre sensor çalışmadı…aÅŸağıdaki baÄŸlantıdaki ÅŸekle göre yapınca çalıştı…gnd ile 5 v kısadevre yaparak oldu..

    http://www.hobbytronics.co.uk/ds18b20-arduino

  3. Ömer Koman dedi ki:

    muhammed ben bu devreyi buradaki şekliyle kullanıyorum sorunsuz çalışıyor bir daha denermisin? dediğin gibi gnd ve +5v kısa devre ettiysen arduino komple çalışmaz ozaman. büyük ihtimal sensorun yönünü karıştırıyorsun ondan çalışmamıştır.

  4. muhammet ali dedi ki:

    abi senin dediÄŸin gibi her yerdede ama dün çok uÄŸraÅŸtım olmadı…ama verdiÄŸim linkteki ÅŸekil ile denedim tak diye oldu..gnd ile 5 v kısa devre olarak sorunsuz çalışıyor…aldığımda su geçirmez olan sensor du..kılıfını söktüm sensore baktım bacaklarındakı kablo balı renklere..dediÄŸim gibi sadece verdiÄŸim linkteki ÅŸekilde baÄŸlayınca çalışıyor..sizin kini tekrar denedim -1000 gibi saçma bir deÄŸer veriyor serial monitor..

  5. Ömer Koman dedi ki:

    ds18b20 3 bacaklı transistör gibi bir şeydir su geçirmez kılıfı filan olmaz sizinki başka bir sensor olabilir. sensorunuzun şuna benzemesi lazım https://www.sparkfun.com/products/245

  6. muhammet ali dedi ki:

    abi senin yolladığın linktekinin aynısı kılıfın içindeki..
    aldığım linki yolluyorum..
    http://www.aliexpress.com/item/5PCS-LOT-Waterproof-DS18b20-temperature-probe-temperature-sensor-Stainless-steel-package-100cm-wire/557650963.html

  7. Ömer Koman dedi ki:

    ilk verdiğin linkteki kod sensörü prazit power modunda kullanıyor önce 1sn ye yakın sensörü içinde şarj ediyor sonra okuma yapıyor verdiği kodda onu destekler. buradaki kod ve bağlantıyı yaparsan buradaki kod da çalışır. karıştırarark kullanma.

  8. Ahmet KAYA dedi ki:

    Ömer bey paylaşımınız için teşekkür ederim istifade ettim. Çok sensörlü kullanım mantığında hata var sayın hocam. oneWire ın çıkış mantığı mikrodenetleyicinin tek pinini kullanarak çok sayıda sensör ile haberleşerek diğer giriş çıkış pinlerini boşa çıkarmaktır. ds18b20 türevi sensörlerin imalatında kendine has 48 bitlik bir adres bilgisi vardır. başlangıçtaki CRC denetlemesi bunun için yapılır. hatta kaç adet CRC kodu olduğu başlangıçta belirlenir. daha sonra hangi adresteki veri okunmak isteniyorsa uygun kod yazılıyor. şu çok vaktim yok ama (Endüstriyel otomasyon Teknolojileri öğretmeniyim, okullar yeni açıldı yoğun bir tempo var) ilerleyen süreçte halledebilirsem çok sensörlü kullanımla ilgili bir örneği sizinle paylaşırım.
    Çalışmalarınızda başarılar.

    • Ömer Koman dedi ki:

      yazıyı yazan arkadaÅŸ yoÄŸuluÄŸundan yazıya cevap veremiyor kodları denemdim bir ara bu sensorden alıp denemeyi yapayım. hata varsa düzeltiriz. bilgi için teÅŸekkürler…

  9. Çağdaş Kaya dedi ki:

    Merhaba öncelikle böylesi faydalı bir bilgi için (benim açımdan çok faydalı) çok teşekkür ederim. Aynı devreyi üniversitede proje ödevi olarak benim yapmam lazım ama aynı devreye ekran takmam lazım bunun için ne yapmam lazım yardımcı olurmusunuz ?

  10. Ömer Koman dedi ki:

    bu devrenin ekranlısı var sitede bakarsanız bulursunuz.

  11. Aytac Gul dedi ki:

    Bu kod DS18B20 icin mi DS18S20 icin mi ikisinin olcum değerlerinden geri döndürdügü sonuc farkli sanirim???

    • Ömer Koman dedi ki:

      ds18-s-20 farklı bir hesaplama yöntemi kullanıyor datasheete bakıp duzeltirsiniz. kutuphane 18-b-20 için

  12. tayfun dedi ki:

    elde edilen sicakli çevrimi 24.95 gibi değerler, acaba bu çözünürlüğü nasildüşrenbiliriz 24.9 yeterli bir birim .

  13. ibrahim dedi ki:

    merhaba;
    Öncelikle ilgili çalışmanız için teşekkür ederim. Program bende çalışmadı, birkaç sorum olacak müsaadenizle.
    1- Program DS18B20 için denmiş ancak kod içinde DS18S20 yazıyor acaba bu bir soruna sebebiyet verir mi?
    2- Muhammet bey’e katılıyorum. Devre bu ÅŸekilde kurulduÄŸunda bende çalışmadı. Maxim’in datasheet’inden bakınca da pinlerde bir hata olduÄŸu görülüyor. Sensörün isminin yazılı olduÄŸu taraf yüzünüze dönükken saÄŸ bacak toprak(GND) ancak sayfa başındaki ÅŸemada Vcc olarak gösterilmiÅŸ.
    Muhammet bey’in verdiÄŸi linkteki gibi devreyi düzenleyince çalıştı.
    Herkese iyi çalışmalar dilerim. Yazanın da ellerine sağlık

  14. Ömer Koman dedi ki:

    merhaba arkdaÅŸlar,
    1) ds18-b-20 ile ds18-s-20 arasındaki farklar resmi sitelerinde var http://www.maximintegrated.com/en/app-notes/index.mvp/id/4377 kısaca en önemli fark 18-s-20 olanda data çıkışı 16 bit hesaplanıp 12 bit olarak sunulmasıdır, 18-b-20 de ise 9-10-11-12 bit olarak değiştirlebilmesidir. eğer bu çözünürlükleri kullanıyorsa program bu komutları kabul etse bile herzaman 12 bit lik çıktı verecektir. her iki sensore uyum isteniyorsa hezaman 12bit çözünürlükten gidip program içinde bunları daha düşük çözünürlüğe dönüştüğrmekte fayda var. ayrıca dönüşüm ve bit kaydırmalardada hesaplama farkları var yazıda bundan bahsedilmiş bakarsınız.

    2) yazının altında gerekli bağlantılar linkinde var ama hangi dataheete baktınız bilmiyorum yazıdaki resim resmi sensor sitesindeki DATASHEETLE TAM UYUMLUDUR http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf siz nerden baktıysanız bahsettiğiniz bağlantı şekline bir linkini verin ben de inceleyeyim.

    sensorun yazıları(duzgun yuzey) size baktığında bacak sıralaması GND-DATA-VDD(+) dir. ŞEMADA SORUN YOK.

  15. Elektrik dedi ki:

    Merhaba;

    DS18B20 üzeriden gelen sıcaklık bilgisini daha doğrusu one wire bus iletişimi Matlab ortamına nasıl aktarabilirim?

    Saygılarımla…

    • Ömer Koman dedi ki:

      matlab yazısı var sitede onun altında sorarsan matlabcı yazarımız bir ÅŸeyler söyler eminim…

      • Elektrik dedi ki:

        İlginiz için teşekkür ederim Ömer Bey. Arduino üzerinden gelen bir veriyi yani serial monitorden okuduğumuz değerleri real time olarak başka bir programa(örneğin matlab) nasıl aktarabileceğim konusunda bilginiz var mı?

        Saygılarımla…

  16. Ömer Koman dedi ki:

    seialmonitor aslında comm port üzerinden gelen verileri gösteren basit bir terminal programı. bilgisayardaki comm portları okuyabilen herhangi bir program buradan gelen verileri işleyebilir. matlab ı bilmiyorum commport okuyacak bir araüzü veya tanımı varsa okunabilmesi lazım. şu linke bir bakın http://forum.arduino.cc/index.php/topic,229143.0.html

    matlabı ne amaçla kullanıyorsunuz? arduinonun nasıl bir fonksiyonu olacak?

  17. Elektrik dedi ki:

    Ömer Bey Matlab’ı Arduino ile birlikte sürekli kullanmam gerekiyor. Bilgisayar üzerinden kontrol ve grafik çizimi için kullanıyorum. Sizin verdiÄŸiniz linkteki gibi analog sensör okuma konusunda bir problem yaÅŸamadım ancak ds18b20 gibi dijital çıkışlı sensörleri okuyamıyorum matlab üzerinden. Düşüncem ÅŸu Arduino üzerinden gelen sıcaklık bilgisini (dijital olarak gelen) serial monitorde gördüğüm gibi Matlab da görebilirsem sorun çözülmüş olacak. Ä°nternette aradım ama çözüm bulamadım.
    Bildiğiniz hızlı tepki veren analog sıcaklık sensörü varsa onuda yazabilirseniz çok sevinirim.
    Saygılarımla…..

  18. Ömer Koman dedi ki:

    pt100 pt1000 gibi sensorler analog çalışır tepki süreleri hızlı oluyor onların, hassasiyet için iyi bir analog devre tasarlamak gerekebilir.

  19. erdem ÅŸen dedi ki:

    merhabalar ben kodu denemeye çalıştım fakat her derleme yaptığımda hata veriyor;
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:85:24: error: WConstants.h: No such file or directory
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp: In constructor ‘OneWire::OneWire(uint8_t)’:
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:93: error: ‘digitalPinToBitMask’ was not declared in this scope
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:94: error: ‘digitalPinToPort’ was not declared in this scope
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:94: error: ‘portInputRegister’ was not declared in this scope
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp: In member function ‘uint8_t OneWire::reset()’:
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:127: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:134: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp: In member function ‘void OneWire::write_bit(uint8_t)’:
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:157: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:165: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp: In member function ‘uint8_t OneWire::read_bit()’:
    C:\Users\PC\Documents\Arduino\libraries\OneWire\OneWire.cpp:185: error: ‘delayMicroseconds’ was not declared in this scope
    bu tarz hatalar alıyorum acaba çözümü nedir yardımcı olursanız çok sevinirim.

    • Ömer Koman dedi ki:

      yazıyı hiç okumamışınız ezbere bu işler olmaz ! onewrire kutuphanesi arduinoda yuklu gelmez şuradan http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip yuklameniz lazım. zipin içindekileri bilgisayarınızda C:\Users\PC\Documents\Arduino\libraries\ altına kopyalayın. yazıda zaten kutuphane nasıl kurulur yazıyor, yazının altında da ilgili dosyalar mevcut ama nedense bu kadar basit şeylere bile dikkat edemiyoruz.

  20. Erdi dedi ki:

    Merhabalar öncelikle bu işte çok yeniyim.Yukarıdaki kodları kullanarak sıcaklık değerlerini çok kolay şekilde serial monitörde gözlemleyebiliyorum. Benim yapmak istediğim şey bu sıcaklık değerlerine göre (if komutunu kullanarak) digital pin çıkışına 1 veya 0 göndererek röleyi kontrol edip bu şekilde de istediğim yükü kontrol etmek.Şöyle bir örnek vermem gerekirse elimde bulunan analog olarak çalışan toprak nem sensörüyle bu kontrölü;
    if(analogRead(5)>300) {
    Serial.println (“Su miktarı az”);
    digitalWrite (pompa, HIGH);
    delay(1000);} komutlarıyla çok rahat ÅŸekilde yapmaktayım.Aynı iÅŸlemi bu sıcaklık sensörü içinde “analogRead” yerine “digitalRead” kullanarak sıcaklık deÄŸerlerini istediÄŸim gibi girerek yine if komutunu kullanarak röleyi kontrol etmek istiyorum fakat yapamıyorum derleyici bir hata vermiyor fakat upload ettiÄŸimde sensörü ısıtsamda soÄŸutsamda röle kapama yapmıyor.Nerede hata yapıyorum yardımcı olursanız sevinirim.Umarım mantıksız bir soru sormamısımdır ÅŸimdiden teÅŸekkürler.

  21. Gökhan GÖL dedi ki:

    Merhaba, OnWire kütüphanesini indirip Libraries e kopyaladım. Fakat hep derlemede hata veriyor. Erdem Åžen isimli arkadaşın hatasının aynısı. Kütüphane yüklemede hata olguÄŸunu düşünüp belki 2 saat uÄŸraÅŸtım ,otomatik yükle manuel yukle yok olmuyor.hep aynı hata…yardımcı olabilir misiniz

    • Ömer Koman dedi ki:

      şurada anlatmışım http://arduinoturkiye.com/ds18b20-dijital-sicaklik-sensorunun-arduino-ile-kullanimi/#comment-6306 şimdi kontrol ettim yukledim ekledim çalıştırdım sorunsuz çalışıyor. arduino programından çıkın. zipli dosyayı indirin içindeki OneWire klasörünü kulağından tutup olduğu gibi arduinonun yuklu olduğu yerde Libraries klasörüne kopyalın. daha sonra arduino ide yi çalıştırın file/exeamples altında OneWire görneiz lazım oradaki örneklerden herhangi birini açın compile edin çalışır !

  22. serafettin dedi ki:

    elimde ardunio due var 7″ lcd dokunmatık ekrana görüntü vermek için ne yapmam lazım..sıcaklık sensöründen gelen bilgileri aktarmak için nasıl bi yazılım lazım . yardımcı olabilir misinz?

  23. SERAFETTÄ°N dedi ki:

    Teşekkur ederim hocam. Bir sorum daha olacakta.4 sensörü tek direnç üzerinden bağladıgım da aldıgım veriler hep aynı oluyor.Hepsinin farklı göstermesi için ne yapmmam gerekli ? 0x44 ü 0xCC yaptım ama değişmedi.

  24. serafettin dedi ki:

    birde hocam her sensör için ayrı isim .
    1.sensör
    2.sensör
    3.sensör
    4.sensör
    gibi

    • Ömer Koman dedi ki:

      çoklu sensorle çalışmadım ama ben olsam sırayla ekleyerek kodumu geliştirirdim. genel olarak sensor kabloların mesafesi çok uzun olmamsı lazım. direnç değerlerii 4.7k ile dene olmazsa 3.3k ile dene gene olmazsa 2.2 k ile deneyin.

  25. füeem dedi ki:

    Merhaba ds18b20 yi arduino üzerinden programlayıp hc05 bluetooth modül ile sıcaklık bilgisini telefona göndermek istiyorum arduino programı nasıl olur ? Cevabınızı bekliyorum şimdiden teşekkürler

    • Ömer Koman dedi ki:

      önce yukarıdaki gibi kodu yaz yükle bağlantıları yap. serial monitorden sıcaklık değerlerini oku. bu noktaya geldiysen bluetooth modulu uno ya bağla ve telefondan bağlanmayı dene androidde bluetooth uzerınden haberleşecek bir yazılımın da olması gerekir. yada en kötü ihtimal bt uzerınde haberleşen bir terminal programı yuklemen lazım. en son aşamada okuduğun sıcaklık değerlerini bt modulden yollamaya kalıyor. foruma gel oradan sor yapan vardır daha çabuk ilerlersin.

  26. ömer mert dedi ki:

    ömer hocam ben 128×64 Graphic LCD ile yılan oyunu yapmaya ugraşıyorum joystick kontrollü ama joystick bir türlü çalıştıramadım iÅŸleme koyamadım yardımcı olursanız sevinirim kodları atsam size bi bakarmısınız acaba

  27. Sedat dedi ki:

    Merhabalar, vermiş olduğunuz kod ve bağlantı şekli ile sıcaklık değerlerini alabildim.

    Sormak istediğim bir soru var; şimdi ben istediğim ortam sıcaklığında lamba yakıp, lamba söndürmek istiyorum. Bunun için röle kullanmam yeterli olacaktır sanırım, fakat kod konusunda yardımınıza ihtiyacım var. İlginiz için teşekkür ederim.

  28. Sedat dedi ki:

    Merhaba Ömer bey, röle ile belli süre bekletiğimiz servo motor yüzünden üste kalan ve devamlı tekrarlanmasını istediğim kodlar çalışmıyor. Rölenin geri sayımı bittikten sonra devreye giriyor. Kod aşağıdaki gibi.

    void loop(void) {

    // Ortam ısısını denetel, 25 derecede sabit tut, başla.
    {
    float temperature = getTemp();

    Serial.print(“Sicaklik: “);
    Serial.println(temperature, 0);

    if (temperature <= 25)
    {
    digitalWrite(RELAY, HIGH);
    delay(500);

    }
    if (25 <= temperature)
    {
    digitalWrite(RELAY, LOW);
    delay(500);

    }

    }
    // Ortam ısısını denetel, 25 derecede sabit tut, bitti.

    // Kuluçka 45 derece sağa ve sola döndür, başla.
    digitalWrite(RELAY2, HIGH);

    for (angle = 60; angle 60; angle–) // 140-60 derece geri tarama
    {
    servo.write(angle);
    delay(90);
    }
    digitalWrite(RELAY2, LOW);
    delay(20000); // Bu süre tamamlanmadan yukarıkadi kodlar çalışmıyor.
    // Kuluçka 45 derece sağa ve sola döndür, bitti.

    }

    • Ömer Koman dedi ki:

      delay süresinde diğer adıma geçilmez evet ama bunu basit bir ifle geçebilirsiniz.
      mesela 20sn beklemek yerine 20 saniye dolduğunda bir işlemi yapın.

      delay(100);
      delaysay=delaysay+1;
      if(delaysay==200){digitalWrite(RELAY2, LOW);delaysay=0;} // 20000/100=200 20saniyede 200 tane 100ms ye var

      • Sedat dedi ki:

        Ömer Hocam verdiğiniz kodu her şekilde denedim, fakat sürekli hata alıyorum. Aldığım hata aşağıdaki gibidir.

        _5110_ekrani_isi_sensoru_ok.ino: In function ‘void servoKontrol()’:
        _5110_ekrani_isi_sensoru_ok.ino:83:3: error: ‘delaysay’ was not declared in this scope
        Derleme sırasında hata oluştu.

        Kodu aşağıdaki kodda olduğu gibi kullandım hocam.

        void servoKontrol(void)
        {

        digitalWrite(ROLE2, HIGH);

        for (angle = 60; angle 60; angle–) // 140-60 derece geri tarama
        {
        servo.write(angle);
        delay(90);
        }

        delay(100);
        delaysay = delaysay + 1;
        if (delaysay == 200) {
        digitalWrite(ROLE2, LOW);
        delaysay = 0;
        }

        }

        • Ömer Koman dedi ki:

          delaysay not declaret hatasi aliyorsunuz. programın başında değişken tanımlarının olduğu yere int delaysay; ekleyin.

        • Ömer Koman dedi ki:

          bu kod

          delay(100);
          delaysay = delaysay + 1;
          if (delaysay == 200) {
          digitalWrite(ROLE2, LOW);
          delaysay = 0;
          }

          sizin gecikme rutininizi çağırdığınız rutin içine yazmışınınz dolayısı ile bu rutini çağırdığınınzda burada takılı kalıyorsunuz. verdiğim gecikmeyi rutin dışında loop için olması gerekirdi.

          delay(100);
          delaysay = delaysay + 1;
          if (delaysay == 200) {
          servokontrol();
          delaysay = 0;
          }
          ÅŸeklinde olursa daha iyi olmaz mıydı? ilk yazdığınız kodda bu loop içindeydi daha sonra ayrı bir fonsiyona alınca iÅŸlemi gecikme mantığı bozulmuÅŸ oldu…

  29. Sedat dedi ki:

    Hocam ne yaptıysam olmuyor, istediğim gibi servo beklerken üst satırlar çalışmıyor.

    #include
    #include
    #include
    #define ROLE 5
    #define ROLE2 4

    Servo servo;
    LCD5110 myGLCD(8, 9, 10, 11, 12);
    extern uint8_t SmallFont[];
    extern uint8_t MediumNumbers[];
    extern uint8_t BigNumbers[];
    int delaysay = 0;
    int isi = 6;
    int servoPin = 3;
    int angle = 0;
    OneWire ds(isi);

    void setup()
    {

    servo.attach(servoPin);
    pinMode(6, INPUT);
    pinMode(ROLE, OUTPUT);
    pinMode(ROLE2, OUTPUT);
    pinMode(7, OUTPUT);
    digitalWrite(7, HIGH);
    myGLCD.InitLCD();
    myGLCD.setContrast(60);
    myGLCD.setFont(SmallFont);
    myGLCD.print(“SEDAT OKUTAN”, CENTER, 20);
    delay(5000);
    myGLCD.clrScr();
    }

    // Isı kontrol.

    void isiKontrol(void)
    {
    float isi = getTemp();

    {
    myGLCD.setFont(SmallFont);
    myGLCD.print(“SICAKLIK:”, 0, 0);
    myGLCD.printNumI(isi, 60, 0);
    myGLCD.print(“C”, 75, 0);
    // myGLCD.printNumF(float(isi)||3, 2, RIGHT, 0);
    //myGLCD.setFont(MediumNumbers);
    //myGLCD.printNumI(isi, 25, 20);
    }
    if (isi <= 25)
    {
    digitalWrite(ROLE, HIGH);
    delay(50);

    }
    if (25 <= isi)
    {
    digitalWrite(ROLE, LOW);
    delay(50);

    }
    }
    // Isı kontrol..

    // Servo kontrolü.

    /*void zamanKontrol()
    {
    delay(100);
    delaysay += 100;
    if (delaysay == 100)
    {
    digitalWrite(ROLE2, LOW);

    }
    else {
    digitalWrite(ROLE2, HIGH);
    }

    }
    */
    void servoKontrol()
    {
    //digitalWrite(ROLE2, HIGH);

    delay(100);
    delaysay = delaysay + 1;
    if (delaysay == 2000) {
    digitalWrite(ROLE2, HIGH);
    delaysay = 0;
    }

    for (angle = 60; angle 60; angle–) // 140-60 derece geri tarama
    {
    servo.write(angle);
    delay(90);
    }

    digitalWrite(ROLE2, LOW);
    //delay(2000);

    }
    // Servo kontrol..

    void loop()
    {

    isiKontrol();
    servoKontrol();
    //zamanKontrol();

    }

    float getTemp() {
    //returns the temperature from one DS18S20 in DEG Celsius

    byte data[12];
    byte addr[8];

    if ( !ds.search(addr)) {
    //no more sensors on chain, reset search
    ds.reset_search();
    return -1000;
    }

    if ( OneWire::crc8( addr, 7) != addr[7]) {
    Serial.println(“CRC is not valid!”);
    return -1000;
    }

    if ( addr[0] != 0x10 && addr[0] != 0x28) {
    Serial.print(“Device is not recognized”);
    return -1000;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44, 1); // start conversion, with parasite power on at the end

    byte present = ds.reset();
    ds.select(addr);
    ds.write(0xBE); // Read Scratchpad

    for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
    }

    ds.reset_search();

    byte MSB = data[1];
    byte LSB = data[0];

    float tempRead = ((MSB << 8) | LSB); //using two's compliment
    float TemperatureSum = tempRead / 16;

    return TemperatureSum;

    }

  30. faruk dedi ki:

    ömer hocam iyi akşamlar . 128*64 grafik lcd kütüpanesini linkten
    ( https://db.tt/itk4CLwi ) indirdim fakat bir türlü örnekleri derliyemiyorum sürekli
    In file included from C:\Program Files (x86)\Arduino\libraries\glcd/glcd.h:38:0,
    from HelloWorld.pde:15:
    C:\Program Files (x86)\Arduino\libraries\glcd/fonts/SystemFont5x7.h:48:28: error: variable ‘System5x7’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
    static uint8_t System5x7[] PROGMEM = {
    ^
    C:\Program Files (x86)\Arduino\libraries\glcd/fonts/Arial14.h:55:27: error: variable ‘Arial_14’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
    static uint8_t Arial_14[] PROGMEM = {
    şeklinde devam eden hata alıyorum. forumda daha önce bu konuya cevap verilmiş fakat foruma ulaşılamıyor. acil yardımlarınızı bekliyorum.

  31. murat dedi ki:

    merhaba rkadaÅŸlar
    forum kısmına ne oldu kaç gündür açılmıyor ?

    • Ömer Koman dedi ki:

      güncelleme yapılıyor açılacak kısa sure sonra, biraz daha beklemenizi rica edeceÄŸiz…

  32. onur dedi ki:

    hocam void setup ve void loop’ dan sonraki parantez içinde ki “(void)” kullanımı neden?

    • Ömer Koman dedi ki:

      void loop(void) yerine void loop() da kullanabilirsiniz. (void) yazıldığında parametre yok anlamında düşünün.

  33. Emrah dedi ki:

    Merhaba Ömer Bey,
    ilgili sıcaklık sensörü ve servo motor ile program yazmaya çalışıyorum. servo.attach(..) komutu yokken sıcaklık sensörü istediğim gibi çalışıyor, ancak servo.attach komutunu kullandıktan sonra kod düzgün çalışmıyor, şöyle ki, düzgün değerler okurken sıklıkla -1000 görmeye başlıyorum. Serial.print ile baktığımda ise aşağıdaki adımda takıldığını gözlemliyorum. Bunun sebebi sizce ne olabilir?
    Teşekkürler
    if ( !sensor.search(addr)) {
    //no more sensors on chain, reset search
    sensor.reset_search();
    return -1000;
    }

  34. Ä°sa dedi ki:

    Ömer bey ben dot matrix ve arduino ile saat yaptım.Acaba yukardaki sizin sıcaklık ölçen kodları kendi devremde nasıl eklemeliyim.Yani devremde ayrı bir display ekranda nereye kodlarım eKlemeliyim. Yani aynı arduino üzerinden yukardaki devreyi de nasıl çalıştırırım.

    • Ömer Koman dedi ki:

      dot matrix kullandığınıza gore vakit kaybetmeden ekranı devamlı tazeleme yapıyorsunuzdur, sensor çıktısınıda matrix ekrana sanki sensoru okumuÅŸ gibi sıcaklığıda yazın ve zamanlamaları once bir belirleyin, daha sonra kodunuzda gecikmeye sebeb olmayacak bir nokta tespit edip orada sensorden veriyi alıp matrixde gostereceksiniz. once yazıyı ve altındaki tartışmaları bir gozden gecirin ayrı bır yerde kodu ds18b20 kodunuçalıştırın bu kodunda çalıştıgından emin olduktan sonra bırleÅŸtirme yapacaksınız. kutuphaneyi ekleyip setup kısmını yapacaksınız sonra diÄŸer donsum okuma kodlarını kendi programınıza ekleyeceksiniz…

  35. Ä°ss dedi ki:

    Ömer bey ilginiz için çok teşekkür ederim.Ben arduinonun acemisiyim.Ama dediklerinizi çok iyi anladım.Aynı matrix ekranda dereceyi de göstermek için dedikleriniz benim için önemli bilgiler oldu.Ama ben diyelimki matrixi çalıştırdığım arduinonun 2.digital çıkışına,matrixin ekranında değil de başka display ekranda da sıcaklığı göstermek için ne yapmalıyım?

    • Ömer Koman dedi ki:

      bağlayacağınız ekranı once tek başına takıp deneyın onun kodunu yazın testi bitsin daha sonra mevcut programınıza ekleyeceksiniz. diğer ekranı bağlayacak kadar pininiz kaldımıki o da ayrı konu.

  36. Ä°sa dedi ki:

    Çok teşekkür ederim.Boşta pin çok var.Ahşap kasa içine yapıcam inşallah.Çok sağolun.

  37. Kemal dedi ki:

    Uno ile yapabilir miyiz

    • Ömer Koman dedi ki:

      zaten uno ile yapılmış bir proje yazıdaki resime bakmadınız mı üstünde kocaman uno yazıyor… elektronik projelerde once dikkatinizi geliÅŸtirmeniz lazım malzemenin üzerindeki bir çizgi iÅŸaretinin bile önemi vardır.

  38. gul dedi ki:

    iyi günler benim ekranımda getTemp was not declared hatası veriyor

    • Ömer Koman dedi ki:

      yazım hatası yapmış olabilirsiniz yada değişkeni eksik tanımlamışınız yada gerekli kutuphaneyı kurmamışınız bu kutuphanedeki getTemp fonkisyonunu bulamıyor compiler.

    • oktay oktay dedi ki:

      getTemp hatası bendede oluştu. Klasörlerin doğru eklendiğini kontrol ettim. ayrıca kodlar birebir yukardaki şekilde kopyaladım. Kontrol et dediğimde hiçbi sorun olmazken yükle dediğimde aşağıdaki şekilde hata alıyorum. ch340 cipli nano kullanıyorum.

      ayrıca harika ve referans bi site 🙂 başarılarınızın devamını dilerim.

      Arduino:1.6.13 (Windows 10), Kart:”Arduino Nano, ATmega328″

      C:\Users\admın\Documents\Arduino\ds18b20_sil\ds18b20_sil.ino: In function ‘void loop()’:

      ds18b20_sil:19: error: ‘getTemp’ was not declared in this scope

      exit status 1
      ‘getTemp’ was not declared in this scope

      This report would have more information with
      “Show verbose output during compilation”
      option enabled in File -> Preferences.

      • oktay oktay dedi ki:

        Dosya/Örnekler/OneWire/coklu_ds18b20 den seçilip yüklendiÄŸinde sorunsuz olarak çalışıyo. Ama bu siteden kopyala yapıştır yapıldığı zaman “getTemp” hatası veriyor. iÅŸin kötüsü örneklerden alınan ve burdan kopyala/yapıştır yapılan metin metin karşılaÅŸtırma programlarında (WinMerge) karşılaÅŸtırıldığında hiçbir fark görünmuyor.

  39. Turgay Olgay dedi ki:

    Ömer bey
    Çalışmalarınızdan dolayı sizi kutlarım.

    Çoklu sensor bağlantılı kodu denediniz mi?
    Denediğinizde uyarıda bulunur musunuz.

    Saygılarımla

  40. Ömer Koman dedi ki:

    her sensoru ve her uygulamayı yapma ımkanımız olmayabılır ancak fikir verebılırız.
    ds18b20 onewire protokolu nu kullanır bu protokol bir hat uzerınden bır cok cıhazın haberleşmesi yapılabılır. hatta ornekde oldugu gıbı tek cıhaz varsa o cıhaza uygun kodu yollayıp cevap vermesı beklenır ama birden fazla sensor okunacaksa bu sefer sensor id si ie komut yollanır ve cevap beklenır. bu işlem için once discovery moda gecıp hatta baglı cıhazlarrın idleri ve ne ile ılgılı oldukları sorgulanır daha sonra bu id ile beraber komut yollanır.

    denemek istersenız şu kutuphane ve uygulamada 5 sensor okunmuş
    https://arduino-info.wikispaces.com/Brick-Temperature-DS18B20

    daha detaylı arama yapmak istiyorsanız googleda coık var şoyle aramayı deneyın
    https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=arduino%20multiple%20ds18b20

  41. hakan dedi ki:

    arduıno uno r3 kit ve 12v 4lü röle kartı var
    ben zamanlama kullanarak röle nın calısmasını istiyorum fakat her seferınde karsılastıgım tek sorun röle hıc bır sekılde cekmıyor .röle kartı uzerındekı ledler programa gore yanıp sonuyor fakan rölelerı aç kapa yapmıyor .ne yapmam lazım .farklı bır yazılımmı olması gerekıyor . örn gonderırsenız sevınırım

    • Ömer Koman dedi ki:

      role kartında roleler ıcın ayrı bır besleme olması gerekebılır guc yetmiyordur. kartın ustundekı roleler çlışıyorsı tık tık diye kontak sesi gelmesi lazım bu ses var ise role kontaklarındaki baglantıyı yanlış yapıyor da olabilirsiniz. foruma gelin

  42. Özgür dedi ki:

    Merhaba hocam ds18b20 yi aşağıdaki kodlarla kullanabiliyorum ancak bu seferde daha önce kullandığım bluetooth modulünü kullanamıyorum. Kodlarda bir hata var sanırım ama ben çözemedim yardımcı olursanız memnun olurum.

    #include
    SoftwareSerial mySerial(10, 11);

    #include
    Servo myservo;
    int pos = 0;

    #include

    int DS18S20_Pin = 2;

    OneWire ds(DS18S20_Pin);

    int fan = 9;

    #define Lamp1 4
    #define Lamp2 5
    #define Lamp3 6
    #define Lamp4 7

    char val;
    String statusLamp1,statusLamp2,statusLamp3,statusLamp4;

    void setup() {
    Serial.begin(9600);
    pinMode(Lamp1,OUTPUT);
    pinMode(Lamp2,OUTPUT);
    pinMode(Lamp3,OUTPUT);
    pinMode(Lamp4,OUTPUT);
    pinMode(fan, OUTPUT);
    myservo.attach(3);
    mySerial.begin(9600);

    }

    void loop() {
    float temperature = getTemp();
    Serial.print(“Sicaklik: “);
    Serial.println(temperature);
    delay(1000);

    }

    float getTemp(){

    byte data[12];
    byte addr[8];

    if ( !ds.search(addr)) {
    //no more sensors on chain, reset search
    ds.reset_search();
    return -1000;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44,1); // start conversion, with parasite power on at the end

    byte present = ds.reset();
    ds.select(addr);
    ds.write(0xBE); // Read Scratchpad

    for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
    }

    ds.reset_search();

    byte MSB = data[1];
    byte LSB = data[0];

    float tempRead = ((MSB <0 ) {
    val = mySerial.read();
    Serial.println(val);
    {
    while (Serial.available() > 0){
    }
    if( val == ‘a’ ) {
    digitalWrite(Lamp1,HIGH); statusLamp1=”4″; }
    else if( val == ‘b’ ) {
    digitalWrite(Lamp2,HIGH); statusLamp2=”5″; }
    else if( val == ‘c’ ) {
    digitalWrite(Lamp3,HIGH); statusLamp3=”6″; }
    else if( val == ‘d’ ) {
    digitalWrite(Lamp4,HIGH); statusLamp4=”7″; }
    else if( val == ‘e’ ) {
    digitalWrite(Lamp1,HIGH); statusLamp1=”4″;
    digitalWrite(Lamp2,HIGH); statusLamp2=”5″;
    digitalWrite(Lamp3,HIGH); statusLamp3=”6″;
    digitalWrite(Lamp4,HIGH); statusLamp4=”7″;
    }
    else if( val == ‘f’ ) {
    for(pos = 0; pos =0; pos-=1);
    myservo.write(pos);
    delay(5);
    }else if( val == ‘G’ )
    {
    delay(500);

    mySerial.println(statusLamp1+statusLamp2+statusLamp3+statusLamp4+”J”); //delay(500);

    val=’ ‘;
    }
    }
    } }

    • Ömer Koman dedi ki:

      bluetooth sorunu nedir buradan tam belli olmaz genelde bt için ön bir takım setup kodları filan yollanır siz direk bt serialı açıp datayı basmışınız bence temiz bir sayfada sadece bt yi test edin çalışıyorsa pwm i ekleyin ben pwm den şüphelendim sanki softserial ile pwm biraz sıkıntı olabilir gibi geldi. foruma gelin sorun birde.

      • Özgür dedi ki:

        Sıcaklık sensörünü çıkardığımda bluetooth sorunsuz çalışıyor. Ancak DS18b20 yi eklediğimde bluetooth modulu veri gönderememeye başladı.

  43. Ömer Koman dedi ki:

    şu forumlarda birşeyler var bir bakın isterseniz onewire ile softserialin birlikte kullanılınca çıkan problemlerden bahsediyor. bazı kod paylaşanlarda var beliki dikkatinizi birşey çeker. ben bt ile ds18b20 birlikte kullanmadığım için sorun yaşamamıştım. foruma da sorun

    http://forum.arduino.cc/index.php?topic=293448.0
    http://forum.arduino.cc/index.php?topic=457213.0

  44. Ahmet dedi ki:

    Ömer bey merhaba. Sensörden -1000 gibi bir değer okunuyor. Neden acaba?

    • Ömer Koman dedi ki:

      bağlantılar çok uzun olmasın direnç değerleri önemli onları kontrol edin yukarıdaki kod ve şemayı uygulamaya çalışın ek herhangi bir şey yapmayın

  45. özkan dedi ki:

    tek hattan 6 tane sensörün sıcaklık bilgilerini okumak istiyorum ayrı ayrı pinlerden değil. bunu nasıl yapa bilirim yada bunun anlatıldıgı bi yazının linkini mail atabilirmisiniz.

    • Ömer Koman dedi ki:

      hattın uzunluÄŸu ne kadar olacak tahminen. one wire protkolu ıle olcebılmen lazım her onewire cıhazın id si ile sorgulama yapacağın ornek kodları gormustum bulamazsan yaz bakalım tekrar…

  46. Abdurrahman ÅžAHÄ°N dedi ki:

    Hocam paylaşım için çok teşekkür ederim öncelikle. Verdiğiniz şemayı oluşturdum sistem sorunsuz çalıştı. Hatta LCD ekrana da yazdırdım. Ama benim sensörü 35 metre hat ile kullanmam gerekiyor. Sistemi seranın sıcaklığını ölçmek için kullanıyorum. Sistemin çalışması fena değil. Küçük bir sorunum var ama. O da LCD deki virgülden sonraki değerin dalgalanması. Yani şöyle; mesela değer önce 12.50 sonra da 12.44 oluyor. Bu durum yarım saniyede bir tekrarlanıyor. Virgülden önceki değer gayet stabil. Bu sorunun çözümü için sizden yardım istiyorum. ŞİMDİDEN TEŞEKKÜRLER.

    • Ömer Koman dedi ki:

      ds18b20 sensorunu 35mt ileri koyarsanız çalışırmı bilmiyor mesafe fazla uzak çalışmayabilir yada 35 mt lik koaksiyel kablo denenebilir ama tavsiye etmem, arduıno nano ve wifi veya rf bır modul kullanıp okudugunuz degerı içeri yollarsınız alıcıda ıse mevcut sistemi kullanıp alıcı olarak wifi veya rf modulle okumanız lazım. virgulden sonraki değerler lazım değilse noktadan sonrasını gostermeyın olsun bitsin.

  47. Birol Yüksel dedi ki:

    Abdurahman bey,
    DS18B20 hassasiyetini (TEMPERATURE_PRECISION = 12; ) değilde 9 kullanırsanız sanırım sorunuz ortadan kalkar. Defaut 12 olabilir. 9 da hassasiyet 0.5, 12 de 0.1 diye hatırlıyorum..

  48. Hakan SaÄŸlam dedi ki:

    Suyun sıcaklık değerini ölçebilecegimiz bir arduino sensörü var mı?

    • Ömer Koman dedi ki:

      ds18b20 sesnsorünün su geçirmez versiyonlarını yapıyorlar, kendinizde yapabilirsiniz, metal bir ince tüpün içine silikon yağı doldurup içine ds18b20 sensörünü koyup sıcaklık ölçersiniz aynı şekilde.

  49. Alper Turna dedi ki:

    Arkadaslar selamlar.

    18ds20 modeli thermocouple ile arduino kullanarak sicaklik olcebiliyorum, fakat birden fazla thermocouple kullanarak nasil sicaklik olculecegini bir turlu cikaramadim. Internette denemedigim code, ve devre kalmadi. Herseyi denedim. Daha once deneyipte basaran arkadas varsa lutfen yardimci olsun.

    Simdiden tesekkur ederim

  50. Alper Turna dedi ki:

    *****DUZELTME****

    Arkadaslar selamlar.
    “18DS20” modeli thermocouple ile arduino kullanarak sicaklik olcebiliyorum, fakat birden fazla thermocouple kullanarak nasil sicaklik olculecegini bir turlu cikaramadim. Internette denemedigim code, ve devre kalmadi. Herseyi denedim. Daha once deneyipte basaran arkadas varsa lutfen yardimci olsun.

    Simdiden tesekkur ederim

  51. Ersin dedi ki:

    Ds18b20 sensörünü kullanıyorum 4.7k direnç ile ama ölçüm sürekli olarak -127 nedeni ne olabilir

    • Ömer Koman dedi ki:

      sensör bozuk olabilir, uçları hatalı bağlamış olabilirsiniz, kodunuzda hata olabilir yada kodunuzdaki pinlerle arduinodaki pinler aynımı kontrol edin..

  52. erdoÄŸan acun dedi ki:

    merhaba ..hocam ben bir ÅŸey soracağım 18b20 bir sıcaklık panom var bunun datasını kablosuz olarak 30 metreye nasıl taşıyabilirim .ne önerirsiniz hc 11…RF433 ..veya baÅŸka bir ÅŸekilde nasıl yapabilirim . elinizde benzer bir proje varmı bana yardımcı olursanız çok sevinirim

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

*



Sosyal AÄŸlar