Bu yazıda arduino ile yapacağımız örnek projede, devredeki butona 1 kez bastığımızda ledin yanmasını ve yanık kalmasını, tekrar bastığımızda ise ledin sönmesini sağlayacağız.
Devremiz diğer led yakma devresi ile aynı olacak. Sadece arduino kodlarında birkaç değişiklik yapacağız. Bu nedenle aşağıdaki buton led devresini hazırlıyoruz.

arduino-buton-ile-aç-kapat-led-devresi
Devrede ledin uzun bacağını (+) arduino 3 numaralı dijital pine bağladık. Kısa bacağını breadboard üzerinden arduino GND (-) pinine bağladık. Butonun soldaki bacağını breadboard üzerinden arduino GND (-) pinine bağladık. Diğer bacağına 220-330 ohm’luk bir direnç bağlıyoruz. Direncin dış bacağını breadboard üzerinden arduino 5V pinine bağladık. Buton ile direncin aynı hizadaki bacağından ise arduino 2 numaralı dijital pine bağlıyoruz.
Devre kurulumu bu kadar şimdi kodlarını yazalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int buton = 2; int led = 3; int butonDurum; void setup() { pinMode(led, OUTPUT); //Led pinini çıkış pini olarak ayarladık. pinMode(buton, INPUT); //buton pinini giriş pini olarak ayarladık. } void loop() { butonDurum = digitalRead(buton); //buton değerini okutup değişkene aktardık. delay(250); if (butonDurum == 1) { digitalWrite(led,!digitalRead(led)); } } |
Kodları inceleyelim.
Kodlarda butona bastığımızda ledin yanmasını ve açık kalmasını sağlayan kod if koşul bloğu içindeki digitalWrite(led,!digitalRead(led)); kodudur.
Normalde arduino pinlerine herhangi bir HIGH yani 1 değeri yazdırmadığımız taktirde o pinin değeri LOW yani 0’dır.
Bu durumda butonDurum değeri 1 olduğunda yani butona ilk kez bastığımızda led pinini digitalRead komutu ile okutup, kodun başına koyduğumuz ! işareti ile tersine çeviriyoruz ve led pinine digitalWrite komutu yazdırıyoruz.
Bu durumda başlangıçta 0 olan led pininin değeri, butona ilk bastığımızda tersi alınıp yani 1 olarak aynı pine yazdırıyoruz. Led pininin yeni değeri artık 1 ve ledimiz yanıyor.
İkinci kez butona bastığımızda bu sefer led pininin 1 olan değerini tersine çevirerek yani 0 yaparak tekrar aynı led pinine yazdırıyoruz. Bu durumda ledimiz sönecektir.
Bu kodu daha fazla buton ve led için çoğaltmak mümkündür. Örneğin 2 buton ile 3 led için kodumuzu geliştirelim.
Devreye yukarıdaki bağlantıları kopyalayarak ek 1 led ve 1 buton bağlayın. Butonu arduino 4 numaralı pine, ledi ise 5 numaralı pine bağlayın.
Yeni devremiz için arduino kodları şu şekilde düzenlenmelidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | int buton = 2; int led = 3; int buton2 = 4; int led2 = 5; int butonDurum; int butonDurum2; void setup() { pinMode(led, OUTPUT); //Led pinini çıkış pini olarak ayarladık. pinMode(buton, INPUT); //buton pinini giriş pini olarak ayarladık. pinMode(led2, OUTPUT); pinMode(buton2, INPUT); } void loop() { butonDurum = digitalRead(buton); //buton değerini okutup değişkene aktardık. butonDurum2 = digitalRead(buton2); delay(250); if (butonDurum == 1) { digitalWrite(led, !digitalRead(led)); } if (butonDurum2 == 1) { digitalWrite(led2, !digitalRead(led2)); } } |
Daha fazla led ve buton için kodları artık kendi projenize göre düzenleyebilirsiniz.