Arduino if-else Yapısı
Arduino'da koşullu ifadeler ile karar yapıları oluşturma.
Elbette! Bir sıcaklık sensörü (genellikle LM35 veya DHT11/DHT22 kullanılır) kullanarak belirli bir sıcaklık eşiği aşıldığında bir LED'i yakmayı adım adım öğreteceğim.
Bu örnekte, kullanımı daha basit olduğu için **LM35 analog sıcaklık sensörünü** kullanacağız. LM35, her santigrat derece için 10mV çıkış veren bir sensördür, bu da onu Arduino'nun analog pinleriyle kolayca okunabilir kılar.
---
### Gereken Malzemeler:
1. **Arduino Kartı** (Uno, Nano, Mega vb.)
2. **LM35 Sıcaklık Sensörü**
3. **LED** (Herhangi bir renk)
4. **220 Ohm Direnç** (LED'i korumak için)
5. **Breadboard** (Devreyi kurmak için)
6. **Jumper Kabloları**
---
### Bağlantı Şeması (Donanım Kurulumu):
LM35 sensörünün düz tarafı size bakacak şekilde:
* **Sol pin (VCC):** Arduino'nun **5V** pinine bağlayın.
* **Orta pin (Çıkış):** Arduino'nun **Analog A0** pinine bağlayın.
* **Sağ pin (GND):** Arduino'nun **GND** pinine bağlayın.
LED'i ve direnci bağlayın:
* **LED'in uzun bacağı (anot):** 220 Ohm dirence bağlayın.
* **Direncin diğer ucu:** Arduino'nun **Dijital 9** pinine bağlayın.
* **LED'in kısa bacağı (katot):** Arduino'nun **GND** pinine bağlayın.

*(Yukarıdaki görsel bir temsilidir, direncin LED'in anot tarafında veya katot tarafında olması fark etmez, yeter ki LED ile güç kaynağı arasına seri olarak bağlansın.)*
---
### Arduino Kodu (Yazılım):
Aşağıdaki kodu Arduino IDE'nize kopyalayın ve Arduino kartınıza yükleyin.
```arduino
// Pin tanımlamaları
const int sensorPin = A0; // LM35 sensörünün çıkış pini A0'a bağlı
const int ledPin = 9; // LED'in bağlı olduğu dijital pin 9
// Sıcaklık eşiği (bu değerin üzerine çıkarsa LED yanacak)
const float esikSicaklik = 25.0; // Santigrat derece cinsinden eşik sıcaklık
void setup() {
// LED pinini çıkış olarak ayarla
pinMode(ledPin, OUTPUT);
// Seri iletişimi başlat (sıcaklığı monitörde görmek için)
Serial.begin(9600);
Serial.println("Sıcaklık İzleyici Başladı...");
}
void loop() {
// 1. LM35 sensöründen analog değeri oku
// analogRead() fonksiyonu 0-1023 arasında bir değer döndürür
int sensorValue = analogRead(sensorPin);
// 2. Analog değeri voltaja dönüştür
// Arduino'nun 5V referansı ve 10 bit çözünürlüğü (1024 adım)
// (5.0 / 1024.0) = her bir analog birimi için voltaj değeri
float voltage = sensorValue * (5.0 / 1024.0);
// 3. Voltajı santigrat dereceye dönüştür
// LM35, her santigrat derece için 10mV (0.01V) verir.
// Bu yüzden voltajı 0.01'e böleriz.
float sicaklikC = voltage / 0.01;
// 4. Sıcaklığı Seri Monitöre yazdır
Serial.print("Sıcaklık: ");
Serial.print(sicaklikC);
Serial.print(" °C");
// 5. Sıcaklık eşiğini kontrol et ve LED'i yönet
if (sicaklikC > esikSicaklik) {
digitalWrite(ledPin, HIGH); // Sıcaklık eşiğin üzerindeyse LED'i yak
Serial.println(" -> LED AÇIK (Eşik Aşıldı!)");
} else {
digitalWrite(ledPin, LOW); // Sıcaklık eşiğin altındaysa LED'i söndür
Serial.println(" -> LED KAPALI");
}
// Her saniyede bir okuma yap (çok sık okumamak için)
delay(1000);
}
```
---
### Nasıl Çalışır ve Açıklamalar:
1. **Pin Tanımlamaları:**
* `sensorPin`: LM35'in çıkışının bağlı olduğu analog pin (A0).
* `ledPin`: LED'in bağlı olduğu dijital pin (9).
* `esikSicaklik`: LED'in yanacağı sıcaklık eşiğini belirler (örneğin 25.0 °C). Bu değeri ihtiyacınıza göre değiştirebilirsiniz.
2. **`setup()` Fonksiyonu:**
* `pinMode(ledPin, OUTPUT);`: LED'in bağlı olduğu pini çıkış olarak ayarlar, böylece Arduino bu pin aracılığıyla LED'i kontrol edebilir.
* `Serial.begin(9600);`: Bilgisayarınızla Arduino arasında seri iletişimi başlatır. Bu sayede sıcaklık değerlerini Arduino IDE'deki Seri Monitör'den takip edebilirsiniz.
3. **`loop()` Fonksiyonu:**
* `int sensorValue = analogRead(sensorPin);`: Arduino, A0 pinindeki voltaj seviyesini okur ve bunu 0 ile 1023 arasında bir tam sayı değerine dönüştürür.
* `float voltage = sensorValue * (5.0 / 1024.0);`: Okunan analog değeri (0-1023) gerçek voltaj değerine dönüştürür. Arduino'nun referans voltajı genellikle 5V'tur ve 1024 farklı değer okuyabilir (2^10).
* `float sicaklikC = voltage / 0.01;`: LM35 sensörü, her 10mV (0.01V) için 1 santigrat derece sıcaklık değişimi gösterir. Bu formül, voltajı santigrat dereceye dönüştürür.
* **Seri Monitör Çıktısı:** `Serial.print` komutları, hesaplanan sıcaklığı ve LED'in durumunu Seri Monitöre yazdırır. Bu, sensörün doğru çalışıp çalışmadığını anlamak için çok önemlidir.
* **Koşullu İfade (`if-else`):**
* `if (sicaklikC > esikSicaklik)`: Eğer ölçülen sıcaklık (`sicaklikC`), belirlediğimiz eşik sıcaklığından (`esikSicaklik`) büyükse:
* `digitalWrite(ledPin, HIGH);`: LED'i yakar (LED'e güç gönderir).
* `else`: Aksi takdirde (yani sıcaklık eşik değerinin altında veya eşitse):
* `digitalWrite(ledPin, LOW);`: LED'i söndürür (LED'e giden gücü keser).
* `delay(1000);`: Kodun her 1 saniyede bir çalışmasını sağlar. Bu, çok hızlı okumaları ve Seri Monitörün aşırı yüklenmesini önler.
---
### Deneme ve Gözlem:
1. Arduino IDE'de kodu yükledikten sonra, araçlar menüsünden **Seri Monitör**'ü açın (veya sağ üstteki büyüteç simgesine tıklayın).
2. Seri Monitörde sıcaklık değerlerini ve LED'in durumunu göreceksiniz.
3. LM35 sensörünü parmaklarınızla tutarak ısıtmaya çalışın. Sıcaklık `esikSicaklik` değerinin üzerine çıktığında LED'in yandığını ve Seri Monitörde "LED AÇIK" mesajını görmelisiniz.
4. Sensörü serbest bıraktığınızda ve sıcaklık eşiğin altına düştüğünde LED'in söndüğünü göreceksiniz.
Bu temel proje ile sıcaklık kontrolüne dayalı otomasyonun ilk adımını atmış olursunuz!
Son Paylaşımlar
-
Python Temelleri Genel Tekrar
14:39:24 - 13/12/2025 -
Python Performans İpuçları
14:38:59 - 13/12/2025 -
Python’da Temiz Kod Yazma
14:38:28 - 13/12/2025 -
Python Mini Proje: Sayı Tahmin Oyunu
14:37:58 - 13/12/2025 -
Python Mini Proje: Hesap Makinesi
14:37:31 - 13/12/2025