Ana içeriğe atla

Raspberry Pi 7″ Dokunmatik Ekran Otomatik Parlaklık



Rpi 7″ resmi ekranımızın arka ışık kapama açma ve parlaklık komutlarından şu yazıda bahsetmiştim. Şimdi de Rpi kartımızın gpio pinlerine taktığımız ldr ile ortam ışık miktarını okuyup ekran parlaklığının otomatik değişmesini nasıl gerçekleştirdiğimden bahsedeceğim. Kodlama da python dili kullanılmıştır.

Öncelikle bu işlem için gerekli basamaklara bakalım.

  1. Ldr ışık duyarlı direnci ile ortam ışık miktarını sayısal değerde okuma
  2. Okunan değere göre gerekli parlaklık miktarının dosyaya (/sys/class/backlight/rpi_backlight/brightness) yazdırılması
  3. Oluşturulan python scriptinin işletim sistemi açılışında çalışacak şekilde ayarlanması.
Tabi kodlama öncesi sensör bağlantılarını yapmamız gerekli. Bağlantı şeması ve fotoğrafından dikkatle takip ederek bağlantıları doğru yaptığınızdan emin olun. Devre şemasında C ile gösterilen kondansatör değeri 16v 22mF. Normalde 1mF gibi küçük değerli bir kondansatör ile yapılmıştı internette gördüğüm örnekte ancak elimde bu vardı. Uyarlamaya açık…






Bağlantılar tamamlandığında backlight.py isimli bir dosya oluşturup aşağıdaki kodları kopyalayıp yapıştırıyoruz. Ya da ekten dosyayı buradan doğrudan indirebilirsiniz.



#!/usr/local/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
#ldr okuma pini tanimlama
pin_to_ldr = 7
def rc_time (pin_to_ldr):
 count = 0
  
 #Output on the pin for 
 GPIO.setup(pin_to_ldr, GPIO.OUT)
 GPIO.output(pin_to_ldr, GPIO.LOW)
 time.sleep(0.01)

 #Change the pin back to input
 GPIO.setup(pin_to_ldr, GPIO.IN)
 #Count until the pin goes high
 while (GPIO.input(pin_to_ldr) == GPIO.LOW):
         count += 1

 return count

#Catch when script is interrupted, cleanup correctly
try:
 # Main loop
 while True:
  bl = open('/sys/class/backlight/rpi_backlight/brightness','w')
  okunan = 0
  okunan = rc_time(pin_to_ldr)
  if okunan <= 1500:
   bl.write('200')
  elif okunan <= 5000:
          bl.write('160')
  elif okunan <= 15000:
          bl.write('130')
  elif okunan <= 30000:
          bl.write('100')
  elif okunan <= 50000:
          bl.write('75')
  elif okunan <= 100000:
          bl.write('50')
  elif okunan <= 140000:
   bl.write('30')
  else:
   bl.write('20')
  bl.close()
  time.sleep(5) 
finally:
 GPIO.cleanup()



backlight.py dosyamızdaki kod 7.pin üzerinden bir değer okuyor ve bu değerin belirli aralıkları için ekranımızın arkaplan ışığının parlaklık miktarını belirleyen dosyaya gerekli değerleri belirlediğimiz aralıklarla yazıyor.


Şimdi kodumuzun sistem açılışına eklenmesi kaldı. Bunun için de rc.local dosyasında değişiklik yapmamız gerekiyor.
Dosyayı düzenlemek için açıyoruz
sudo nano /etc/rc.local
Son satırdaki exit 0 komutundan önce şu komutu ekliyoruz
sudo python /home/pi/python/backlight.py &


ctrl + o ile kaydedip ctrl +x ile çıkış yapıyoruz.


Artık sistem açılışında python kodumuz çalışacak ve ortam ışığına göre ekranımızın parlaklığı değişecek. Kodlama konusunda acemiyim. Arduino da bulunan map komutu gibi bir komutla değerleri aralık olarak değil de daha hassas değişkenlikte yapılabilir. Merak ettikleriniz ve önerileriniz için yorumlarınızı bekliyorum.

Bu blogdaki popüler yayınlar

MQTT Broker Kurulumu – Mosquitto ve deneme

MQTT (Message Queuing Telemetry Transport), nesnelerin interneti alanında önemli haberleşme protokollerinden biridir. Kısaca bir sunucu üzerinden (broker) bir cihazın yayın yapması (publish) ve başka bir cihazın da bu yayını takip etmesi (subscribe) ‘ne dayalı bir yapıdır. Yayın ve takip işlemleri broker üzerinde açılan topicler üzerinden olur. Örneğin; Publisher1 isimli yayıncımız brokerda /ev/priz1 isimli topic (konu) içine ‘aç’ diye yayın yapar. Prize bağlı röle içeren Subscriber1 isimli takipçimiz de brokerdaki /ev/priz1 isimli topic değerini takip eder. ‘aç’ yayınını gören Subscriber1 röleyi sürüp prizi aktifleştirebilir. Aynı topic için birden fazla yayıncı olabilir. (aile üyelerinin telefonlarından aynı prizi kontrol edebilmesi) Bir yayıncı birden fazla topic için yayın yapabilir. Örneğin nem ve sıcaklık sensörü olan cihaz bu değerleri /sensor/nem ve /sensor/sicaklik gibi iki ayrı topic için yayın yapabilir. Yine bir topic’i birden fazla subscriber takip edebilir.(

Spinoza' nın Tanrısı

Einstein' ın ABD üniversitelerinde konferans verdiğinde öğrencilerin ona sık sık sordukları soru: - Tanrı' ya inanmıyor musun? Einstein hep şu cevabı verirdi: Spinoza' nın tanrısına inanıyorum. Spinoza' yı okumayan kişi aynı yerde kalır. Umarım bu özet, benim kadar size de hizmet eder... "Baruch de Spinoza", 17. yüzyıl felsefesinin üç büyük rasyonalistinden biri olarak kabul edilir, Fransız "Descartes" ile birlikte... ....................................................... Spinoza' nın Tanrısı, ya da Doğası... Tanrı şöyle derdi: Dua etmeyi bırak ve göğsüne yumruk atmaktan da vazgeç. Yapmanı istediğim şey, dünyaya çıkıp hayatının tadını çıkarman. Eğlenmeni, şarkı söylemeni ve senin için yaptığım her şeyin tadını çıkarmanı istiyorum. Kendi inşa ettiğin o soğuk ve karanlık tapınaklara gitmeyi bırak. Oraların benim evim olduğunu söylüyorsun. Benim evim dağlarda, ormanlarda, nehirlerde, göllerde, plajlarda. Yaşadığım her yerde sana olan aş

Raspberry Pi 7″ Dokunmatik Ekranı ve Parlaklık Ayarı

Raspberry pi için üretilmiş 7″ 800×480 60fps 10 nokta dokunmatik desteğine sahip ekran DSI bağlantısı ile Rasberry pi kartınıza takılıyor. Güç kaynağı için gpio 5volt pinini kullanabilirsiniz. Ekranın diğer bir özelliği arka tarafında Rpi kartınızı takabileceğiniz vida delikleri bulunması. Raspbian işletim sistemiyle sorunsuz ve kurulum gerektirmeden çalışıyor. Raspberry pi tek kart bilgisayar için bir ekran tercihi projenize göre farklı alternatifler içeriyor. Gpio pinlerine oturan ekranlar, hdmi ekranlar , analog video ekranlar( pek tercih edilmiyor), son olarak mini bilgisayarımız üzerindeki display portuna (DSI) bağlanan ekranlar. Kullanıma amacı tercihi belirleyecektir ancak sorunsuz bir kullanım için benim önerim hmdi ve DSI portuna takılan orjinal rpi ekranı. Ekranı kullanırken bazı kontroller için aşağıdaki komutları kullanıyoruz: Ekranı arka ışığını kapatmak için echo 1 > /sys/class/backlight/rpi_backlight/bl_power Ekranı arka ışığını açmak için e