Ders 98-4: Arduino Kullanarak Bir LED Işığını Söndürme: Parlaklık Kontrolü
LED'ler her yerde — göstergeler, ekranlar, dekoratif aydınlatma — ancak çoğu yeni başlayan, bir LED'i yalnızca açıp kapatmakla kalır. Bu proje bir sonraki adımı atıyor: Arduino'nun yerleşik PWM (Pulse Width Modulation - Darbe Genişlik Modülasyonu) özelliğini kullanarak bir LED'i yumuşak bir şekilde kademeli olarak yakıp söndürme. Sert bir yanıp sönme yerine, doğal kısılmayı, nefes alma efektlerini ve tamamen dijital bir pinden analog benzeri kontrolü taklit eden kademeli bir parlaklık artışı ve azalışı elde edersiniz. Sonucu hemen görebildiğiniz için bu, en tatmin edici ilk projelerden biridir ve aynı teknik, gerçek ürünlerde motor hız kontrolünün, ses seviyesinin ve arka ışık kısılmasının temelini oluşturur.
Kademeli söndürmeyi anladığınızda, bunu çok çeşitli pratik yapılara uygulayabilirsiniz:
- Dikkat dağıtıcı bir şekilde yanıp sönmek yerine nazikçe nabız gibi atan bir cihazda "nefes alan" durum göstergesi oluşturma
- Ortam ışığına veya günün saatine göre bir LED gece lambasını otomatik olarak kısma
- Bir LCD veya OLED ekrandaki arka ışığın parlaklığını kontrol etme
- Parlaklık seviyeleri arasında yumuşak geçişlerle ortam aydınlatması veya dekoratif lambalar yapma
- Sizi doğal olarak uyandırmak için kademeli olarak parlayan yavaş bir gün doğumu çalar saati simüle etme
- Küçük DC motorlara veya fanlara hız kontrolü ekleme (aynı PWM prensibi geçerlidir)
Bu eğitim, Robojax Arduino Adım Adım Kursu'nun bir parçasıdır ve özellikle 10 projeden 4.'sünü kapsar: Arduino Kullanarak Bir LED Işığını Kademeli Söndürme. Tam program makalenin altında indirilebilir.
Donanım ve Bileşenler
Bu projenin parça listesi minimum düzeydedir — daha önce herhangi bir Arduino çalışması yaptıysanız, muhtemelen ihtiyacınız olan her şeye zaten sahipsinizdir:
- 1× Arduino kartı (Uno, Nano, Mega veya herhangi bir uyumlu kart)
- 1× LED (5mm veya 3mm, herhangi bir renk)
- 1× Direnç (200Ω ila 1000Ω — 300Ω ila 1kΩ aralığı iyi çalışır)
- Breadboard ve DuPont jumper kabloları
- Programlama ve güç için USB kablosu
LED hakkında önemli bir not: uzun bacak anottur (pozitif) ve kısa bacak — veya plastik gövdede düz kenarı olan taraf — katottur (negatif). Bunu ters yapmak, LED'in basitçe yanmaması anlamına gelir, bu yüzden gücü açmadan önce iki kez kontrol edin.
Direnç değeri için, metin (videoda 03:49'da) matematiği açıklıyor: tipik bir LED yaklaşık 2V düşürür ve yaklaşık 10mA akıma ihtiyaç duyar. 5V besleme ile kalan 3V direnç üzerinden düşürülmelidir, bu da R = V/I = 3V / 0.01A = 300Ω verir. Pratikte, 300Ω'dan 1000Ω'a kadar herhangi bir şey işe yarar — daha yüksek değerler sadece daha sönük bir LED üretir. Kademeli söndürme için bu aslında sorun değil, çünkü zaten parlaklığı değiştiriyorsunuz.
Kablolama Kılavuzu
Kablolama olabilecek en basit haliyle. LED'in anodu bir direnç üzerinden Arduino'daki PWM destekli bir pine bağlanır — bu projede pin 3. Katot toprağa bağlanır.
Neden özellikle pin 3? Çünkü tüm Arduino pinleri PWM'i desteklemez. Çoğu Arduino kartında, PWM destekli pinler tilde sembolü (~) ile işaretlenmiştir — genellikle bir Uno'da pin 3, 5, 6, 9, 10 ve 11. PWM olmayan bir pin kullanırsanız, analogWrite() değişken bir çıkış üretmez; LED sadece açık veya kapalı olur.
Devreyi aşağıdaki gibi bağlayın:
- LED'i breadboard'a yerleştirin, hangi bacağın anot (daha uzun) ve hangisinin katot (daha kısa/düz taraf) olduğunu not edin.
- LED'in anodunu direnç üzerinden Arduino pin 3'e bağlayın.
- LED'in katodunu Arduino'nun GND pinine bağlayın.
- Arduino'yu USB ile bilgisayarınıza takın.
Kod Açıklaması
Bu projenin taslağı, klasik Arduino "Fade" örneğine dayanmaktadır ve birkaç küçük değişiklik yapılmıştır. Her satırı açıklamak yerine, kendi deneyleriniz için ayarlamak isteyeceğiniz kısımlara odaklanalım.
Kullanıcı Tarafından Yapılandırılabilir Değişkenler
Kodun başında, üç değişken tüm davranışı kontrol eder:
int led = 3; // LED'in bağlı olduğu PWM pini
int brightness = 0; // LED'in ne kadar parlak olduğu
int fadeAmount = 3; // LED'in kaç puan kademeli söneceğiled— LED'in hangi pine bağlı olduğunu tanımlar. Varsayılan olarak pin 3'tür, ancak bunu PWM destekli herhangi bir pine (kartınızda ~ ile işaretli) değiştirebilirsiniz. LED'i farklı bir pine taşırsanız, bu değeri buna uyacak şekilde güncelleyin.brightness— Bu, 0 (kapalı) ile 255 (tam parlaklık) arasında değişen mevcut parlaklık seviyesidir. Kod bunu 0'da başlatır, ancak bu aralığın herhangi bir yerinde başlatabilirsiniz.fadeAmount— Bu, üzerinde oynaması en ilginç olanıdır. Her döngüde kaç parlaklık "adımı" atıldığını kontrol eder. 3 gibi küçük bir değer yavaş, kademeli bir solma üretir. 20 gibi daha büyük bir değer LED'in çok hızlı bir şekilde yanıp sönmesini sağlar. Transkript bunu (videoda 22:37'de) göstermektedir — 5'ten 20'ye değiştirmek efekti çarpıcı biçimde hızlandırır.
Solma Nasıl Çalışır
Solmanın özü loop() içindeki iki satırda gerçekleşir:
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
Döngüden her geçişte, mevcut parlaklık değeri analogWrite() kullanılarak LED'e yazılır, ardından parlaklık fadeAmount kadar artırılır. analogWrite() fonksiyonu, analog bir voltajı simüle etmek için PWM kullanır — pini hızla açıp kapatır ve açık kalma süresinin kapalı kalma süresine oranı algılanan parlaklığı belirler.
Parlaklık 0 veya 255'e ulaştığında, kod fadeAmount'un işaretini çevirerek yönü tersine çevirir:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
LED'in önce yanmasını, sonra sönmesini, sonra tekrar yanmasını sağlayan şey budur — sürekli bir nefes alma döngüsü. Döngünün sonundaki delay(30) animasyonun genel hızını kontrol eder. Daha kısa bir gecikme solmayı hızlandırır; daha uzun bir gecikme yavaşlatır.
Değerlerle Deney Yapma
Görsel efekt üzerinde size en fazla kontrol sağlayan iki değişken vardır:
fadeAmount'u artırın daha hızlı, daha dramatik bir solma için. 10 veya 20 deneyin.fadeAmount'u azaltın yavaş, nazik bir nefes alma efekti için. 1 veya 2 deneyin.delay()değerini ayarlayın tempoyu değiştirmek için. Daha küçük gecikmeler tüm döngüyü hızlandırır; daha büyük gecikmeler uzatır.
Küçük bir fadeAmount'u kısa bir gecikmeyle birleştirmek son derece pürüzsüz, neredeyse organik bir solma üretir — ortam aydınlatması için harika. Büyük bir fadeAmount ile kısa bir gecikme hızlı bir nabız efekti oluşturur.
Canlı Proje Gösterimi
Kod yüklendikten sonra, LED'in kapalıdan tam parlaklığa yavaşça parladığını, sonra tekrar karardığını ve sonsuza kadar tekrarladığını göreceksiniz. Transkript varsayılan davranışı (videoda 22:25'te) göstermektedir — pürüzsüz, orta hızda bir solma.
fadeAmount 20'ye değiştirildiğinde, LED çok hızlı bir şekilde yanıp söner — neredeyse bir titreme gibi. 3'e ayarlandığında, solma belirgin şekilde daha uzun sürer ve rahat, kademeli bir geçiş oluşturur. Bu, videoda (videoda 23:02'de) açıkça gösterilmektedir.
Bu projenin güzelliği, kod değişikliklerinizin etkisini hemen görebilmenizdir — kablo değişikliği gerekmez, sadece değişkenleri düzenleyin ve yeniden yükleyin. Bu sıkı geri bildirim döngüsü, PWM ve zamanlamanın nasıl etkileşime girdiğine dair sezgi geliştirmek için mükemmel bir yol sunar.
Bunu sürekli çalışmasına izin vermek yerine bir push butonla solmayı tetikleyerek daha ileri götürmek isterseniz, bu ayrı bir eğitimde ele alınmaktadır — aşağıdaki ilgili projeler bölümüne bakın.
Bu videodan ilgili projeler
- Ders 98-1: Arduino ile Bir LED Nasıl Açılıp Kapatılır
- Ders 98-2: Arduino ile Push Buton Kullanarak Bir LED Nasıl Açılıp Kapatılır
- Ders 98-3: Arduino ile Push Buton Kullanarak Bir Toggle LED Nasıl Açılıp Kapatılır
- Ders 98-5: Arduino Kullanarak Bir Butona Basıldığında Işığı Solma
- Ders 98-6: Arduino ile Tahterevalli LED Oyunu
- Ders 98-7: Arduino ve 5 LED Kullanarak Yürüyen Işık
- Ders 98-8: Arduino ile Push Buton ve LED'lerle Yürüyen Işık
- Ders 98-9: Arduino Kullanarak LED Voltaj Seviye Ölçer veya potansiyometre ile yürüyen ışık
- Ders 98-10: Arduino Trafik Işığı
Bölümler
- [00:00] 10 Arduino LED projesine genel bakış
- [01:22] Kursa giriş ve gerekli bileşenler
- [02:29] LED'leri anlama: semboller, polarite ve türler
- [03:49] Ohm yasasını kullanarak LED direnç değerini hesaplama
- [05:53] Proje 1: Bir LED'i açıp kapatma
- [12:43] Proje 2: Push buton ile LED kontrolü
- [17:13] Proje 3: Push buton ile Toggle LED
- [20:12] Proje 4: Bir LED'i solma — kod incelemesi
- [22:25] Solma gösterimi ve solma hızını ayarlama
- [23:20] Proje 5: Push buton tetiklemeli solma LED
- [27:32] Proje 6: Tahterevalli LED efekti
- [30:47] Proje 7: 5 LED ile yürüyen ışık
- [36:41] Proje 8: Push buton ile kontrol edilen yürüyen ışık
- [42:25] Proje 9: Potansiyometre ile LED voltaj seviye ölçer
- [49:25] Proje 10: Arduino trafik ışığı
This code has not been parsed yet. Please return to the admin panel to parse it.
İhtiyacın olabileceğini düşünüyor
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Kaynaklar ve referanslar
-
BelgelendirmeDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Dış
Dosyalar📁
Arduino Kütüphaneleri (zip)
-
SunFounder'ın 3'ü 1 arada Akıllı Araba öğrenme kiti kaynak kodu
3in1-kit-main-v2.zip12.80 MB
Kullanım Kılavuzu
-
SunFounder 3'ü 1 Arada Arduino Akıllı Araba montaj kılavuzuBu belge, SunFounder 3'ü 1 Arada Arduino Akıllı Araba'nın adım adım montajını gösterir
SunFounder_car_assembly_manual.pdf1.20 MB