Merhaba arkadaşlar. Bugün sizlerle beraber buton kontrollü RGB LED uygulaması yapacağız.
Gerekli malzemeler:
Kodumuz:
int kirmiziLEDPin = 11;
int yesilLEDPin = 10;
int maviLEDPin = 9;
int kirmiziSwitchPin = 7;
int yesilSwitchPin = 6;
int maviSwitchPin = 5;
int kirmizi = 0;
int mavi = 0;
int yesil = 0;
void setup()
{
pinMode(kirmiziLEDPin, OUTPUT);
pinMode(yesilLEDPin, OUTPUT);
pinMode(maviLEDPin, OUTPUT);
pinMode(kirmiziSwitchPin, INPUT_PULLUP);
pinMode(yesilSwitchPin, INPUT_PULLUP);
pinMode(maviSwitchPin, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(kirmiziSwitchPin) == LOW)
{
kirmizi ++;
if (kirmizi > 255) {
kirmizi = 0;
}
}
if (digitalRead(yesilSwitchPin) == LOW)
{
yesil ++;
if (yesil > 255) {
yesil = 0;
}
}
if (digitalRead(maviSwitchPin) == LOW)
{
mavi ++;
if (mavi > 255) {
mavi = 0;
}
}
renkAyarla(kirmizi, yesil, mavi);
delay(10);
}
void renkAyarla(int kirmizi, int yesil, int mavi)
{
kirmizi = 255 - kirmizi; //ortak katot kullanılıyorsa silin
yesil = 255 - yesil; //ortak katot kullanılıyorsa silin
mavi = 255 - mavi; //ortak katot kullanılıyorsa silin
analogWrite(kirmiziLEDPin, kirmizi);
analogWrite(yesilLEDPin, yesil);
analogWrite(maviLEDPin, mavi);
}
RGB LED kodumuzu hatırlayacak olursak, orada bulunan renkAyarla fonksiyonunu bu uygulamamızda tekrar kullandığımızı görebilirsiniz. Yaptığımız uygulamada, her bir renk için parlaklığı arttıran bir push buton mevcut. Bu butonlara basıldığı sürece o rengin parlaklık değeri artıyor, 255’e ulaştığında ise tekrardan 0’lanıyor.
Sizin kullandığınız LED, ortak katot yapıya sahipse, ilk RBG uygulamamızdaki değişikliklerin aynısını burada uygulayabilirsiniz.
İpucu: Her rengin o anki parlaklık değerini görmek isterseniz, seri port ekranına yazdırabilirsiniz. setup fonksiyonuna Serial.begin(9600) satırını ekl… hadi biraz da siz düşünün. Seri port haberleşme dersimizden kopya çekebilirsiniz
Gerekli malzemeler:
- Arduino UNO
- Breadboard
- 1 adet ortak anot veya ortak katot RGB LED
- 3 adet 220 Ω direnç
- 3 adet push buton
- İki ucu erkek jumper kablo
Devre şeması 17/01/2017 tarihinde güncellenmiştir.
Kodumuz:
int kirmiziLEDPin = 11;
int yesilLEDPin = 10;
int maviLEDPin = 9;
int kirmiziSwitchPin = 7;
int yesilSwitchPin = 6;
int maviSwitchPin = 5;
int kirmizi = 0;
int mavi = 0;
int yesil = 0;
void setup()
{
pinMode(kirmiziLEDPin, OUTPUT);
pinMode(yesilLEDPin, OUTPUT);
pinMode(maviLEDPin, OUTPUT);
pinMode(kirmiziSwitchPin, INPUT_PULLUP);
pinMode(yesilSwitchPin, INPUT_PULLUP);
pinMode(maviSwitchPin, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(kirmiziSwitchPin) == LOW)
{
kirmizi ++;
if (kirmizi > 255) {
kirmizi = 0;
}
}
if (digitalRead(yesilSwitchPin) == LOW)
{
yesil ++;
if (yesil > 255) {
yesil = 0;
}
}
if (digitalRead(maviSwitchPin) == LOW)
{
mavi ++;
if (mavi > 255) {
mavi = 0;
}
}
renkAyarla(kirmizi, yesil, mavi);
delay(10);
}
void renkAyarla(int kirmizi, int yesil, int mavi)
{
kirmizi = 255 - kirmizi; //ortak katot kullanılıyorsa silin
yesil = 255 - yesil; //ortak katot kullanılıyorsa silin
mavi = 255 - mavi; //ortak katot kullanılıyorsa silin
analogWrite(kirmiziLEDPin, kirmizi);
analogWrite(yesilLEDPin, yesil);
analogWrite(maviLEDPin, mavi);
}
RGB LED kodumuzu hatırlayacak olursak, orada bulunan renkAyarla fonksiyonunu bu uygulamamızda tekrar kullandığımızı görebilirsiniz. Yaptığımız uygulamada, her bir renk için parlaklığı arttıran bir push buton mevcut. Bu butonlara basıldığı sürece o rengin parlaklık değeri artıyor, 255’e ulaştığında ise tekrardan 0’lanıyor.
Sizin kullandığınız LED, ortak katot yapıya sahipse, ilk RBG uygulamamızdaki değişikliklerin aynısını burada uygulayabilirsiniz.
İpucu: Her rengin o anki parlaklık değerini görmek isterseniz, seri port ekranına yazdırabilirsiniz. setup fonksiyonuna Serial.begin(9600) satırını ekl… hadi biraz da siz düşünün. Seri port haberleşme dersimizden kopya çekebilirsiniz