AVR Potansiyometre ile RGB LED Uygulaması

Bu uygulamada daha önce yaptığımız PWM RGB uygulamasına ilave olarak 3 adet potansiyometre ekleyip ADC birimini kullanarak RGB LED’in rengini ayarlayacağız. Bunun için yine ATmega328PB mikrodenetleyicisine ihtiyacımız var. Bağlantılar şu şekilde olmalı,

PB1 → (Kırmızı LED)
PD0 → (Yeşil LED)
PD1 → (Mavi LED)
Kırmızı POT → A0 (PC0)
Mavi POT → A1 (PC1)
Yeşil POT → A2 (PC2)

Şimdi programı çalıştırmadan önce inceleyelim.

Burada adc.h adında daha öncesinde kendi yazdığım ve bir önceki kitapta açıkladığım ADC kütüphanesini kullandım. Bu işimizi oldukça kolaylaştıracak. #define offset 1000 diyerek bir offset değeri oluşturduk ve bunun sebebini birazdan açıklayacağım. Burada dikkat etmemiz gereken bir nokta adc_left_adjust() fonksiyonudur. Bir önceki uygulamada PWM üretmek için değerin sola 8-bit kaydırıldığını görmüştünüz. Bu bit kaydırma işlemi mikrodenetleyiciyi biraz meşgul etmekte. Burada çevre biriminin özelliğini kullanarak ADC’den verileri hazır olarak sola hizalı bir şekilde alıyoruz. Yani alacağımız veri artık 0–10-bit değer aralığında değil 0–16-bit değer aralığında oluyor. Böylelikle 16-bit zamanlayıcı yazmaçlarına doğrudan atama yapabilriiz.

Diğer zamanlayıcı ayarlarını bildiğiniz için şimdi sonsuz döngüye geçelim. Burada her bir karşılaştırma yazmacına ilgili analog kanaldan okunan veriyi atamaktayız. Yalnız öncesinde offset değeri bu okuma değerlerinden çıkarılmakta. Bunun sebebi ise 0–1000 arasında elde edilen değerlerde LED’lerde titreme olması ve bunun hiç istenmemesidir. Bu uygulamayı geliştirmek adına daha gerçekçi renkler elde etmek için her birine ayrı ayrı offset değeri verip çeşitli ayarlamalar yapabilirsiniz.

--

--