Işık Sensörü

Işık sensörünü okuyup bir eşikle karanlıkta LED yakmayı öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Işık sensörü, üzerine düşen ışığın miktarını ölçüp bunu bir elektrik değerine çevirir; biz de bu değeri okuyarak "karanlık mı, aydınlık mı?" sorusuna karar verebiliriz.

Üretilecek kanıt

Kağıt üstünde çalışan bir "akıllı sokak lambası" tasarla. Malzeme gerektirmez; sadece mantığı yaz. Sensörünün aydınlıkta 900, karanlıkta 150 okuduğunu varsay. Bir eşik değeri seç ve neden onu seçtiğini bir cümleyle yaz. Aşağıdaki boşlukları doldurarak sözde kodu tamamla: esik = ____ Sürekli tekrarla: deger = ışık sensörünü oku Eğer deger < esik ise lambayı…

Kontrol tuzağı

Ters mantık kurmak LDR karanlıkta büyük değil, çoğu devrede küçük değer verir (çünkü direnç artınca bağlı okunan gerilim düşebilir). Kod çalışmıyorsa önce aydınlık ve karanlık değerlerini gerçekten ölçüp not al, sonra < mı > mı gerektiğine karar ver. Eşiği rastgele seçmek "500 iyidir herhalde" demek yerine, kendi…

Sonraki bağlantı

Sıcaklık Sensörü

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulDijital ve Analog Sinyal
İçerikStandart ders · 1.345 kelime
Son güncelleme

Bir cümlelik özet

Işık sensörü, üzerine düşen ışığın miktarını ölçüp bunu bir elektrik değerine çevirir; biz de bu değeri okuyarak "karanlık mı, aydınlık mı?" sorusuna karar verebiliriz.

Neden önemli?

Etrafımızdaki birçok cihaz aslında ışığı "hisseder". Sokak lambaları hava kararınca kendiliğinden yanar, sabah aydınlanınca söner. Telefonunun ekranı güneşin altında parlaklaşır, karanlık odada kısılır. Bahçe fıskiyeleri, otomatik kapılar ve oyuncak robotlar da çevredeki ışığa göre davranış değiştirir. Bir çizgi izleyen robot bile, zeminin açık mı koyu mu olduğunu ışıkla anlar.

Bir önceki derste sinyallerin dijital (yalnız açık/kapalı) veya analog (yavaşça değişen) olabildiğini gördük. Işık sensörü tam da bu yüzden güzel bir örnektir: ışık birden değil, kademeli olarak azalır ya da artar. Bu yüzden onu çoğunlukla analog bir değer olarak okuruz. Bu dersi bitirdiğinde, bir sensörden gelen değeri okumayı ve bir eşik (sınır) belirleyip karar vermeyi öğrenmiş olacaksın. Bu, robotik projelerinin çevreyi "algılamasının" ilk adımıdır.

Işık sensörü nedir ve nasıl çalışır?

LDR: ışığa göre değişen direnç

En yaygın ışık sensörü LDR'dir. Açılımı "Light Dependent Resistor", yani "ışığa bağlı direnç"tir. Bazen "foto direnç" de denir. Küçük, yassı, üzerinde kıvrımlı bir desen olan bir parçadır.

LDR'nin görevi tek bir fikre dayanır:

Direnç, elektriğin geçişine karşı gösterilen zorluk gibidir. Direnç yüksekken akım zor geçer, düşükken kolay geçer. LDR bu direncini ışığa göre değiştirdiği için, ona bağlı devredeki elektrik değeri de değişir. İşte kartımız bu değişimi okur.

Değeri sayıya çevirmek

Kartlar (micro:bit, Arduino gibi) direnci doğrudan "ohm" olarak okumaz. Bunun yerine LDR'yi bir devreye bağlarız ve karttaki analog giriş ucundan bir sayı okuruz. Bu sayı genellikle bir aralıktadır:

Önemli olan kesin sayı değil, mantıktır: aydınlıkta bir uç değer, karanlıkta başka bir uç değer okuruz. Değer büyüyüp küçülürken, ışığın da arttığını ya da azaldığını anlarız.

Sensörü okumak: analog değer

Günlük örnek: gece lambası

Bir gece lambası düşün. Odada ışık varken sönük durur, oda karardığında yanar. İçinde küçük bir ışık sensörü vardır. Sürekli çevreyi ölçer ve "yeterince karanlık mı?" diye kontrol eder.

Mantığı sözde kod (pseudocode) olarak şöyle yazabiliriz:

Başla
Sürekli tekrarla:
  isik_degeri = ışık sensörünü oku
  Eğer isik_degeri < esik ise
    LED'i yak
  Değilse
    LED'i söndür

Burada esik bizim belirlediğimiz bir sınır sayısıdır. Ondan küçük değerler "karanlık", büyük değerler "aydınlık" anlamına gelir.

Eşik değeri nasıl seçilir?

Eşik hazır bir sayı değildir; onu deneyerek buluruz. Yöntem basittir:

  1. Önce sensörü aydınlık odada oku, değeri not et.
  2. Sonra sensörün üstünü elinle kapat, karanlıktaki değeri not et.
  3. İki değerin ortasına yakın bir sayı seç. İşte senin eşiğin bu olur.

Örneğin aydınlıkta 800, elle kapatınca 200 okuyorsan, eşiği 450–500 civarı seçebilirsin.

micro:bit tarzı okuma

micro:bit'in kendi ekranında ışık ölçen bir özelliği vardır (LED'lerini sensör gibi kullanır). Blok yerine metin koduyla mantığı şöyle görebiliriz:

from microbit import *

while True:
    isik = display.read_light_level()   # 0-255 arası bir değer
    if isik < 50:                       # 50, seçtiğimiz eşik
        display.show(Image.HEART)       # karanlıkta kalbi göster
    else:
        display.clear()                 # aydınlıkta ekranı temizle
    sleep(200)

Arduino tarzı okuma

Arduino'da LDR'yi bir analog pine bağlar ve analogRead ile okuruz:

esik = 500

Sürekli tekrarla:
  isik_degeri = A0 pinini oku    // 0-1023 arası
  Eğer isik_degeri < esik ise
    13 numaralı LED'i yak        // karanlık: ışığı aç
  Değilse
    13 numaralı LED'i söndür     // aydınlık: ışığı kapat
  200 milisaniye bekle

Dikkat et: TR ve Arduino sürümünde de mantık aynı. Sadece sayı aralığı ve pin adları değişiyor. Öğrenmen gereken şey mantık: oku, karşılaştır, karar ver.

Mini uygulama

Kağıt üstünde çalışan bir "akıllı sokak lambası" tasarla. Malzeme gerektirmez; sadece mantığı yaz.

  1. Sensörünün aydınlıkta 900, karanlıkta 150 okuduğunu varsay.
  2. Bir eşik değeri seç ve neden onu seçtiğini bir cümleyle yaz.
  3. Aşağıdaki boşlukları doldurarak sözde kodu tamamla:
esik = ____

Sürekli tekrarla:
  deger = ışık sensörünü oku
  Eğer deger < esik ise
    lambayı ____
  Değilse
    lambayı ____
  1. Şimdi kuralı ters çevir: "Aydınlıkta yanan, karanlıkta sönen" bir uyarı ışığı için kodu nasıl değiştirirsin? (İpucu: < işaretini düşün.)

Bir yetişkinle birlikte gerçek bir LDR de deneyebilirsin. Sensörün değerini ekrana yazdır, elini üstünde gezdir ve sayının nasıl değiştiğini izle.

Uygulama laboratuvarı: Işık Sensörü

Işık Sensörü konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Işık sensörü nedir ve nasıl çalışır? ile Değeri sayıya çevirmek arasındaki ilişkiyi kullanarak ölçüm tablosu, kalibrasyon kararı ve güvenli çıktı davranışı hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: sıcaklık değişimini ölçüp eşik aşımını bildiren düzenek. Dersin ana hedefi “Işık sensörünü okuyup bir eşikle karanlıkta LED yakmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Işık Sensörü” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın sıcaklık değişimini ölçüp eşik aşımını bildiren düzenek senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Işık sensörü nedir ve nasıl çalışır? ve Değeri sayıya çevirmek ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Ters mantık kurmak

LDR karanlıkta büyük değil, çoğu devrede küçük değer verir (çünkü direnç artınca bağlı okunan gerilim düşebilir). Kod çalışmıyorsa önce aydınlık ve karanlık değerlerini gerçekten ölçüp not al, sonra <> mı gerektiğine karar ver.

Eşiği rastgele seçmek

"500 iyidir herhalde" demek yerine, kendi odanda ölçüm yap. Işık koşulları her ortamda farklıdır; senin eşiğin senin odana özeldir.

Sensörün üstünü kapatmayı unutmak

Test ederken parmağınla ışığı engellemezsen değerin değişmediğini görürsün. Değişimi görmek için mutlaka aydınlık ve karanlık iki durumu da dene.

Bekleme koymamak

Değeri saniyede binlerce kez okuyup ekrana yazarsan sayılar okunmaz akar. Aralara küçük bir bekleme (örneğin 200 ms) koymak okumayı rahatlatır.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. LDR'nin açılımı nedir ve ne ölçer?
  2. Karanlıkta LDR'nin direnci artar mı, azalır mı?
  3. Işık sensörünün değerini neden dijital değil analog olarak okuruz?
  4. "Eşik" nedir ve onu nasıl belirleriz?
  5. Aydınlıkta yanan, karanlıkta sönen bir ışık için sözde koddaki karşılaştırmayı nasıl değiştirirsin?

Cevaplar

  1. LDR, "Light Dependent Resistor" yani "ışığa bağlı direnç"tir. Üzerine düşen ışık miktarını ölçer (direncini ışığa göre değiştirerek).
  2. Karanlıkta direnci artar; aydınlıkta azalır.
  3. Çünkü ışık birden değil, kademeli olarak değişir. Analog okuma, "biraz karanlık" ile "çok karanlık" arasındaki farkı bir sayı aralığıyla gösterir.
  4. Eşik, "karanlık" ile "aydınlık" arasında seçtiğimiz sınır sayısıdır. Aydınlık ve karanlık değerlerini ölçüp ikisinin ortasına yakın bir sayı seçerek belirleriz.
  5. Karşılaştırmayı ters çeviririz: deger < esik yerine deger > esik yazarız. Böylece ışık artınca lamba yanar.

Kaynak ve doğrulama notu

“Işık Sensörü” dersi için doğrulama odağı Işık sensörü nedir ve nasıl çalışır? ile Değeri sayıya çevirmek arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Sensör değerleri modele, besleme gerilimine ve ortama göre değişebilir. Bu nedenle derslerdeki eşikler örnek kabul edilmeli; gerçek projede ölçüm tablosu oluşturularak kalibrasyon yapılmalıdır.

Sonraki ders

Sıcaklık Sensörü

Quiz’i BaşlatSensörler ve Aktüatörler bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.