Arduino ile Temel Projeler: Yürüyen Işık ve RGB LED Kontrolü
📚 Giriş
Bu çalışma materyali, Arduino platformunda iki temel ancak öğretici projeyi detaylı bir şekilde incelemektedir: belirli bir düzen içinde yanıp sönen LED'lerle "yürüyen ışık" efekti oluşturma ve bir potansiyometre aracılığıyla bir RGB LED'in renklerini kontrol etme. Bu projeler, Arduino programlamanın temel taşlarını, dijital ve analog giriş/çıkışları, döngüleri ve koşullu ifadeleri anlamanız için harika bir başlangıç noktası sunmaktadır.
📌 Kaynak Bilgisi
Bu çalışma materyali, bir dersin sesli transkripti ve kullanıcı tarafından kopyalanıp yapıştırılmış Arduino kod parçacıkları birleştirilerek hazırlanmıştır.
1️⃣ Yürüyen Işık Projesi: Temeller ve Uygulama
Genel Bakış
Yürüyen ışık efekti, bir dizi LED'i sırayla yakıp söndürerek dinamik bir görsel oluşturur. Bu efekt, gösterge panellerinde veya dekoratif aydınlatmalarda sıkça kullanılır. Bu proje, dijital çıkışları ve zamanlama kontrolünü kullanarak dinamik bir görsel efekt yaratmanın temelini oluşturur.
Kod Analizi
✅ void setup() Fonksiyonu
Bu fonksiyon, Arduino kartı her başladığında veya sıfırlandığında yalnızca bir kez çalışır.
- Pin Tanımlamaları:
fordöngüsü kullanılarak 8'den 12'ye kadar olan dijital pinler çıkış olarak ayarlanır.pinMode(i, OUTPUT);komutu, bu pinlere bağlı LED'leri kontrol edebileceğimizi belirtir. Bu, her bir LED'in doğru şekilde çalışması için kritik bir adımdır.
✅ void loop() Fonksiyonu
Bu fonksiyon, Arduino çalıştığı sürece sürekli olarak tekrar eden ana program döngüsüdür. Yürüyen ışık efektini oluşturan asıl mantık burada yer alır.
- İleri Yönlü Işık Akışı:
- İlk
fordöngüsü, 8'den 12'ye kadar olan pinleri sırayla çalıştırır. digitalWrite(i, HIGH);komutu ile ilgili pindeki LED yakılır.delay(100);ile 100 milisaniye beklenir. Bu, LED'in yanık kalma süresini belirler.digitalWrite(i, LOW);ile LED söndürülür.- Bu döngü tamamlandığında, LED'ler 8'den 12'ye doğru sırayla yanıp sönmüş olur.
- İlk
- Kısa Duraklama: İlk döngü bittikten sonra, genel bir
delay(100);komutu ile kısa bir duraklama yapılır. Bu, bir sonraki döngü başlamadan önce küçük bir nefes alma süresi sağlar. - Geri Yönlü Işık Akışı:
- İkinci
fordöngüsü ise, 12'den 8'e doğru geriye doğru sayarak LED'leri aynı mantıkla yakıp söndürür. digitalWrite(i, HIGH);ile LED yakılır,delay(100);ile beklenir vedigitalWrite(i, LOW);ile söndürülür.
- İkinci
- Bu iki döngünün art arda çalışmasıyla, LED'lerin ileri ve geri hareket eden bir ışık dizisi oluşturduğunu görürsünüz.
💡 Anahtar Kavramlar
pinMode(pin, mode): Bir pini giriş (INPUT) veya çıkış (OUTPUT) olarak ayarlar.digitalWrite(pin, value): Dijital bir pineHIGH(açık) veyaLOW(kapalı) değeri yazar.delay(ms): Programı belirtilen milisaniye (ms) kadar duraklatır.forDöngüsü: Belirli bir sayıda tekrar eden işlemler için kullanılır.
Örnek Kod
void setup() {
// 8'den 12'ye kadar olan pinleri çıkış olarak ayarla
for (int i = 8; i < 13; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
// LED'leri 8'den 12'ye doğru sırayla yakıp söndür
for (int i = 8; i < 13; i++) {
digitalWrite(i, HIGH); // LED'i yak
delay(100); // 100 milisaniye bekle
digitalWrite(i, LOW); // LED'i söndür
}
delay(100); // Kısa bir duraklama
// LED'leri 12'den 8'e doğru sırayla yakıp söndür (geri dönüş)
for (int i = 12; i > 7; i--) {
digitalWrite(i, HIGH); // LED'i yak
delay(100); // 100 milisaniye bekle
digitalWrite(i, LOW); // LED'i söndür
delay(100); // Her LED söndükten sonra kısa bekleme
}
}
2️⃣ Potansiyometre ile RGB LED Kontrolü
Genel Bakış
Bu proje, bir potansiyometre kullanarak bir RGB LED'in renklerini nasıl kontrol edeceğinizi gösterir. Analog girişleri okuma, değerleri dönüştürme ve koşullu mantık kullanma becerilerini geliştirir.
Değişken Tanımlamaları
int kirmizi = 11;: Kırmızı LED pini.int yesil = 10;: Yeşil LED pini.int mavi = 9;: Mavi LED pini.int pot = A0;: Potansiyometrenin bağlı olduğu analog giriş pini.int potdeger;: Potansiyometreden okunan ham değeri saklar.int potdeger2;:map()fonksiyonu ile dönüştürülmüş değeri saklar (bu projede doğrudan kullanılmasa da).
Kod Analizi
✅ void setup() Fonksiyonu
- Pin Tanımlamaları:
pinMode(kirmizi, OUTPUT);pinMode(yesil, OUTPUT);pinMode(mavi, OUTPUT);: RGB LED'in renk pinleri çıkış olarak ayarlanır.pinMode(pot, INPUT);: Potansiyometre pini giriş olarak ayarlanır, çünkü bu pinden bir değer okunacaktır.
- Seri Haberleşme:
Serial.begin(9600);komutu ile seri haberleşme başlatılır. Bu, potansiyometreden okunan değerleri bilgisayarınızdaki seri monitörden izlemenizi sağlar.
✅ void loop() Fonksiyonu
- Potansiyometre Değeri Okuma:
potdeger = 1023 - analogRead(pot);:analogRead(pot)komutu,A0pinindeki voltajı 0 ile 1023 arasında bir sayıya dönüştürür.1023 - analogRead(pot)ifadesi, potansiyometrenin dönüş yönüne göre ters bir değer elde edilmesini sağlar.
- Değer Dönüştürme (map fonksiyonu):
potdeger2 = map(potdeger, 0, 1023, 0, 255);:map()fonksiyonu,potdegerin 0-1023 aralığındaki değerini,analogWritefonksiyonu için uygun olan 0-255 aralığına dönüştürür.- ⚠️ Önemli Not: Mevcut kodda
potdeger2değişkeni RGB LED'in renk yoğunluğunu doğrudan ayarlamak için kullanılmamaktadır. Renk değişimleri,potdegerin belirli aralıklarına göre sabit değerlerle (0 veya 255) yapılmaktadır.potdeger2kullanılarak daha yumuşak renk geçişleri elde edilebilir.
- Seri Monitöre Yazdırma:
Serial.println(potdeger);komutu ilepotdegerin anlık değeri seri monitöre yazdırılır. - Renk Kontrol Mantığı (Koşullu İfadeler): Bir dizi
ifkoşulu kullanarak,potdegerin değerine göre RGB LED'in hangi rengi göstereceği belirlenir.- Kapalı:
if (potdeger < 70): Tüm renkler sıfıra ayarlanır (LED kapalı). - Kırmızı:
if (potdeger >= 70 && potdeger < 120): Kırmızı renk 255 (tam parlaklık) olarak ayarlanır, diğerleri sıfır (LED kırmızı yanar). - Yeşil:
if (potdeger >= 120 && potdeger < 180): Yeşil renk 255 olarak ayarlanır (LED yeşil yanar). - Mavi:
if (potdeger >= 180 && potdeger < 256): Mavi renk 255 olarak ayarlanır (LED mavi yanar).
- Kapalı:
- Bu koşullar sayesinde, potansiyometreyi çevirerek LED'in rengini kapalıdan kırmızıya, yeşile ve maviye doğru değiştirebilirsiniz.
💡 Anahtar Kavramlar
analogRead(pin): Analog bir pinden 0-1023 arasında bir değer okur.analogWrite(pin, value): PWM (Darbe Genişlik Modülasyonu) destekleyen bir pine 0-255 arasında bir değer yazar. Bu, LED parlaklığını veya motor hızını kontrol etmek için kullanılır.map(value, fromLow, fromHigh, toLow, toHigh): Bir sayıyı bir aralıktan diğerine ölçekler.Serial.begin(baudRate): Seri haberleşmeyi başlatır.Serial.println(data): Veriyi seri monitöre yazdırır ve yeni bir satıra geçer.ifKoşulu: Belirli bir koşul doğruysa bir kod bloğunu çalıştırır.&&(VE) Operatörü: İki koşulun da doğru olması durumundatruedöner.
Örnek Kod
int kirmizi = 11; // Kırmızı LED pini
int yesil = 10; // Yeşil LED pini
int mavi = 9; // Mavi LED pini
int pot = A0; // Potansiyometre analog pini
int potdeger; // Potansiyometreden okunan ham değer
int potdeger2; // map fonksiyonu ile dönüştürülmüş değer (bu projede doğrudan kullanılmıyor)
void setup() {
pinMode(kirmizi, OUTPUT); // Kırmızı pini çıkış olarak ayarla
pinMode(yesil, OUTPUT); // Yeşil pini çıkış olarak ayarla
pinMode(mavi, OUTPUT); // Mavi pini çıkış olarak ayarla
pinMode(pot, INPUT); // Potansiyometre pinini giriş olarak ayarla
Serial.begin(9600); // Seri haberleşmeyi başlat
}
void loop() {
potdeger = 1023 - analogRead(pot); // Potansiyometre değerini oku ve ters çevir
potdeger2 = map(potdeger, 0, 1023, 0, 255); // Değeri 0-255 aralığına dönüştür (kullanılmıyor)
Serial.println(potdeger); // Potansiyometre değerini seri monitöre yazdır
// Potansiyometre değerine göre RGB LED rengini ayarla
if (potdeger < 70) {
analogWrite(kirmizi, 0);
analogWrite(yesil, 0);
analogWrite(mavi, 0);
}
if (potdeger >= 70 && potdeger < 120) {
analogWrite(kirmizi, 255);
analogWrite(yesil, 0);
analogWrite(mavi, 0);
}
if (potdeger >= 120 && potdeger < 180) {
analogWrite(kirmizi, 0);
analogWrite(yesil, 255);
analogWrite(mavi, 0);
}
if (potdeger >= 180 && potdeger < 256) {
analogWrite(kirmizi, 0);
analogWrite(yesil, 0);
analogWrite(mavi, 255);
}
}
📈 Sonuç
Bugün, Arduino ile iki temel ama bir o kadar da öğretici projeyi detaylıca inceledik.
- Yürüyen ışık projesiyle dijital çıkışları, döngüleri ve zamanlama kontrolünü kullanarak dinamik bir görsel efekt oluşturmayı öğrendiniz.
- Potansiyometre ile RGB LED kontrolü projesiyle ise analog girişleri okumayı, değerleri dönüştürmeyi ve koşullu ifadelerle farklı durumları yönetmeyi kavradınız.
Bu projeler, Arduino dünyasına adım atarken karşılaşacağınız temel kavramları pekiştirmenize yardımcı olacaktır. Unutmayın, bu temelleri kullanarak çok daha karmaşık ve yaratıcı projeler geliştirebilirsiniz. Denemekten ve keşfetmekten çekinmeyin!








