Gerekli Malzemeler:

  •  Arduino Uno
  • Breadboard
  • 9 Adet Erkek-Erkek Jumper Kablo
  • LM35 Sıcaklık Sensörü
  • 5mm Kırmızı LED
  • 2 Adet 330 Ohm (Turuncu-Turuncu-Kahverengi)
  • Buzzer

LM35 sensörü sıcaklığı okuyarak analog veriye dönüştürür. LDR uygulamamızda yaptığımız gibi analog veriyi okuyup yorumladığımızda ordamdaki veya LM35 bağlı olduğu cismin sıcaklığını ölçmüş oluruz. LM35 ile -55°C ile +150°C derece arasında ölçüm yapabilirsiniz. Lineer çalışan, yani sıcaklık arttıkça aynı oranda çıkıştaki gerilimi arttırarak 10mV/°C hassasiyetinde çalışır. LM35’in üç bacağı bulunmaktadır. Sensörün üzerindeki kesim kısım aynı zamanda yazılı kısıma önden baktığınızda sağda kalan bacak negatif(-), solda kalan bacak pozitif(+) ve ortadaki bacak ise sinyal çıkışıdır. Sensörün pozitif bacağına +5V ve negatif bacağınıda GND’ye bağlıyoruz. Buzzer’ı kullanırken, LED kullanırkenki gibi direnç koyarak buzzer’ın zarar görmesini engelliyoruz. Buzzer’ın pozitif bacağını ise direnç üzerinden Arduino kartımızın 9 numaralı pinine bağlıyoruz. Buzzer’ın negatif bacağını ise GND hattına bağlıyoruz. LED’i ise pozitif bacağını direnç üzerinden Arduino kartınızın 8 numaralı pinine negatif bacağını ise GND hattına bağlıyoruz. Devremiz tamamlanmış oldu.  

int lm35Pin = A0;
int led = 8;
define buzzer 9
int zaman = 50;
int okunan_deger = 0;
float sicaklik_gerilim = 0;
float sicaklik = 0;
void setup()
{
pinMode(led,OUTPUT);
pinMode(buzzer,OUTPUT);
Serial.begin(9600);
}
void loop()
{
okunan_deger = analogRead(lm35Pin);
sicaklik_gerilim = (okunan_deger / 1023.0)*5000;
sicaklik = sicaklik_gerilim /10.0;
Serial.println(sicaklik);
if(sicaklik >= 30){
digitalWrite(led,HIGH);
digitalWrite(buzzer,HIGH);
delay(zaman);
digitalWrite(led,LOW);
digitalWrite(buzzer,LOW);
delay(zaman);
}
else{
digitalWrite(led,LOW);
digitalWrite(buzzer,LOW);
}
}

Kod kısmına geçtiğimizde “int lm35Pin = A0;” satırı ile A0 pinine “LM35Pin” ismini veriyoruz. İkinci satırda yine 8 numaralı bacağa “led” ismini veriyoruz. Üçüncü satırda ilse isimlendirme işlemini “#define” komutunu kullanarak yaptık. Bu kodda kullanım bakımından iki tanımlamanın bir farkı bulunmamaktadır. Daha ileri seviye uygulamalarda sizde zamanla “int” ve “#define” komutlarının farkını anlayabileceksiniz. Kodumuzun içerisinde kullanacağımız “zaman” , “okunan değer” değişkenlerini “int” değişkeni kullanarak tam sayı olarak belirledik. “sicaklik_gerilim” ve “sicaklik” değişkenlerini “float” değişken tipi kullanarak noktalı sayı değerleri alabilecek şekilde tanımladık.

Setup kısmında 2 adet çıkış bacağımızı ve Seri haberleşme başlatmayı ayarladıktan sonra asıl kodumuzun çalışacağı loop kısmına geçebiliriz.

Loop kısmında ilk yapmamız gereken A0 pininden okuma yapıp okudumuz gerilim değerini Arduino içerisinde yorumlayabildiğimiz bir sayıya çevirmek. Loop içerisindeki ilk üç satırda bu işlemi gerçekleştirip “Serial.println(sicaklik);” komutu ile “sicaklik” değişkeni içerisine yazdığımız sıcaklık değerini seri monitörde gözlemliyoruz. Seri mönitörün nasıl kullanıldığını önceki projelerimizde görmüştük.

Sıcaklık değeri 30°C dereceyi geçtiğinde hem buzzer hem de LED ile uyarı vermesini istiyoruz. Bu sebeple 22.satırdaki if komutu ile sıcaklığın istediğimiz değerden büyük olup olmadığını kontrol ediyoruz. Eğer 30°C dereceden büyük ise Buzzer ve LED kesik aralıklar ile bize uyarı verecek. Eğer 22.satırdaki 30°C dereceden büyüktür koşulu sağlanamaz ise ozaman 30.satırdaki “else” ifadesinin altındaki Buzzer ve LED’i söndürme komutları çalışacaktır.

CEVAP VER

Please enter your comment!
Please enter your name here