merhaba ben ds18b20 ısı sensörüyle belli aralıklarda led yakmak istiyorum // Arduinoturkiye.com DS18B20 Dijital Sıcaklık Sensörü Kullanımı #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;
int led1=8;
int led2=9;
int led3=10;
int led4=11;
int led5=12;
int led6=13;
// 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.
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
}
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);
if((temperature >=0) && ( temperature < 20)){
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);} else
if((temperature >=20) && ( temperature < 40)){
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW); } else
if((temperature >=40) && (temperature < 60)){
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
digitalWrite(led5,HIGH);
digitalWrite(led6,HIGH); }
else
digitalWrite(led1,HIGH);
digitalWrite(led6,HIGH);
}
// 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;
}
programın bi kısmını internetten buldum bazı kısımlarını ben ekledim program hata vermiyor ama 0-20 arası ilk iki led yanmıyor sadece 5.led yanıyor acaba sorun nerede?</onewire.h>