Proje hakkında
Potansiyometre, ortasında hareketli bir uç bulunan ayarlanabilir bir dirençtir. Mili çevirdikçe orta bacaktaki voltaj 0V ile 5V arasında değişir. Arduino'nun analog pinleri bu voltajı 0 ile 1023 arasında bir sayıya dönüştürür.
Arduino gerçek anlamda "yarım voltaj" üretemez; bunun yerine pini çok hızlı açıp kapatarak ortalama bir güç elde eder. Bu tekniğe PWM (Darbe Genişlik Modülasyonu) denir. Gözümüz bu hızlı yanıp sönmeyi göremez ve LED'i daha sönük ya da daha parlak algılar.
- Analog giriş pinlerini ve 10 bitlik ADC'yi
- PWM'in çalışma mantığını ve ~ işaretli pinleri
- map() ile bir değer aralığını diğerine dönüştürmeyi
- Seri Port Ekranında verileri canlı izlemeyi
Malzeme listesi
Projeyi tamamlamak için aşağıdaki 7 çeşit malzemeye ihtiyacınız var. Parçaların çoğu Arduino başlangıç setlerinde hazır olarak bulunur.
Arduino Uno R3 1 adet
Projenin beyni. Nano veya Mega ile de aynı kod çalışır.
Breadboard 1 adet
Lehimsiz devre kurmak için yarım boy (400 delik) yeterlidir.
5 mm LED 1 adet
Parlaklık farkını görmek için beyaz veya mavi LED idealdir.
220 Ω direnç 1 adet
LED'i aşırı akımdan korur. Renk kodu: kırmızı-kırmızı-kahverengi.
10 kΩ potansiyometre 1 adet
Döner tip, 3 bacaklı. 1 kΩ–100 kΩ arası değerler de çalışır.
Jumper kablo (erkek-erkek) 6 adet
USB A-B kablosu 1 adet
Kodu yüklemek ve kartı bilgisayardan beslemek için.
Devre bağlantıları
Bağlantıları USB kablosu takılı değilken yapın. Her satır, bileşenin hangi bacağının Arduino'nun hangi pinine gideceğini gösterir; çizgi rengi önerilen kablo rengidir.
Adım adım kurulum
Güç hatlarını kurun
5V'u breadboard'un + hattına, GND'yi − hattına bağlayın.
Potansiyometreyi takın
Potansiyometrenin üç bacağını breadboard'da üç ayrı sütuna yerleştirin. Sol bacağı + hattına, sağ bacağı − hattına bağlayın.
Orta bacağı A0'a bağlayın
Orta bacağın olduğu sütundan Arduino'nun A0 pinine bir kablo çekin. Bu, okuyacağımız değişken voltajdır.
LED devresini kurun
LED'in kısa bacağını − hattına bağlayın. Uzun bacağı 220 Ω direnç üzerinden D9 pinine götürün.
Kodu yükleyin
Aşağıdaki kodu Arduino IDE'ye yapıştırın, kartı ve portu seçip yükleyin.
Seri Port Ekranını açın
Sağ üstteki büyüteç simgesine tıklayın ve hızı 9600 baud yapın. Potansiyometreyi çevirdikçe iki değerin de değiştiğini görün.
Seri Çizici ile grafiği izleyin
Araçlar › Seri Çizici menüsünü açarsanız parlaklık değerini canlı bir grafik olarak görebilirsiniz.
Arduino kodu
Kodları Arduino IDE'ye yapıştırıp yükleyebilirsiniz. Türkçe karakterler yalnızca yorum satırlarında kullanıldı; Seri Port Ekranına yazdırılan metinlerde bilerek kullanılmadı.
Potansiyometre değerini okuyup LED parlaklığına dönüştüren kod.
// Potansiyometre ile LED Parlaklık Kontrolü
// RobotikHocasi.com
const int potPin = A0; // Potansiyometre orta bacağı
const int ledPin = 9; // PWM destekli pin (~9)
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 1) Analog değeri oku: 0 - 1023
int potDegeri = analogRead(potPin);
// 2) 0-1023 aralığını PWM için 0-255 aralığına dönüştür
int parlaklik = map(potDegeri, 0, 1023, 0, 255);
// 3) LED'e PWM sinyali gönder
analogWrite(ledPin, parlaklik);
// 4) Değerleri Seri Port Ekranına yazdır
Serial.print("Pot: ");
Serial.print(potDegeri);
Serial.print(" Parlaklik: ");
Serial.println(parlaklik);
delay(20);
}
Bonus: Potansiyometre olmadan LED'in yavaşça parlayıp sönmesi (nefes efekti).
// Nefes alan LED efekti
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int i = 0; i <= 255; i++) { // Yavaşça parla
analogWrite(ledPin, i);
delay(6);
}
for (int i = 255; i >= 0; i--) { // Yavaşça sön
analogWrite(ledPin, i);
delay(6);
}
}
Kod açıklaması
analogRead(potPin)Arduino Uno'nun 10 bitlik analog-dijital dönüştürücüsü (ADC) 0–5V aralığını 1024 basamağa böler. Her basamak yaklaşık 4,9 mV'tur.
map(potDegeri, 0, 1023, 0, 255)Bir sayıyı bir aralıktan diğerine orantılı olarak taşır. 512 değeri yaklaşık 127'ye dönüşür.
analogWrite(ledPin, parlaklik)Pine 0–255 arasında görev oranına (duty cycle) sahip bir PWM sinyali gönderir. 127 değeri, pinin zamanın yaklaşık yarısında açık olduğu anlamına gelir.
Serial.print / printlnprint aynı satırda yazmaya devam eder, println yazdıktan sonra yeni satıra geçer.
Nasıl çalışır?
Potansiyometre aslında bir gerilim bölücüdür. İki ucu arasında sabit bir direnç izi vardır; orta bacak bu iz üzerinde kayan bir fırça gibi hareket eder. Fırça 5V ucuna yaklaştıkça orta bacaktaki voltaj artar, GND ucuna yaklaştıkça azalır.
PWM sinyali saniyede yaklaşık 490 kez (D5 ve D6'da yaklaşık 980 kez) tekrarlanan bir kare dalgadır. analogWrite(9, 64) dediğinizde pin her döngünün yaklaşık %25'inde açık, %75'inde kapalıdır. LED bu hızda yanıp söndüğü için göz bunu %25 parlaklık olarak algılar. Aynı teknik motor hızı kontrolünde de kullanılır.
Sorun giderme
Değerler 0 ile 1023 arasında rastgele zıplıyor
Parlaklık değişmiyor, LED sadece yanıp sönüyor
Potansiyometreyi sağa çevirince parlaklık azalıyor
Potansiyometre ısınıyor
Geliştirme fikirleri
Projeyi tamamladıysanız, aşağıdaki fikirlerle bir adım öteye taşıyabilirsiniz.
Işık barı
5 LED kullanarak potansiyometre çevrildikçe sırayla yanan bir seviye göstergesi yapın.
Hız ayarlı yanıp sönme
Parlaklık yerine LED'in yanıp sönme hızını potansiyometreyle ayarlayın.
Motor hızı
Aynı kodla bir transistör üzerinden küçük bir DC motorun hızını kontrol edin.
Logaritmik parlaklık
Göz parlaklığı doğrusal algılamaz. Değerin karesini alarak daha doğal bir geçiş elde edin.