Arduino Ders 6: İki Buton İle Led Kontrolü

Arduino Uygulaması

İki Buton ile İki LED Kontrolü

İki buton kullanarak yeşil ve kırmızı LED’i ayrı ayrı yakıp söndürmeyi, buton girişlerini güvenli okumayı ve LED çıkışlarını kontrol etmeyi öğreneceğiz.

Arduino iki buton iki LED uygulaması

Bu yazımızda Arduino ile iki buton kullanarak iki farklı LED yakma ve söndürme uygulaması yapacağız. Uygulama devresini ve örnek Arduino kodlarını birlikte inceleyelim.

Örneğimizi açıklayacak olursak, bir butona basıldığında yeşil LED yanacak ve kırmızı LED sönecek. Diğer butona bastığımızda ise kırmızı LED yanacak ve yeşil LED sönecek.

Bu uygulamada LED’ler çıkış, butonlar ise giriş olarak kullanılır. Butonlardan gelen dijital değerler okunur ve bu değerlere göre LED’lerin durumu değiştirilir.

Önce yapacağımız Arduino örnek proje için devre şemasını inceleyelim. Arduino üzerindeki 5V ve GND pin sayısı sınırlı olduğu için bu örnek gibi çok elemanlı devrelerde 5V ve GND hatlarını breadboard üzerinden dağıtmak devrenin daha düzenli olmasını sağlar.

Arduino’nun 5V pininden breadboardun pozitif (+) hattına, GND pininden breadboardun negatif (−) hattına bağlantı yapılabilir. Daha sonra LED ve buton bağlantıları bu hatlar kullanılarak kurulabilir.

Arduino iki buton iki LED devre şeması
  • Yeşil LED: Arduino 2 numaralı pine
  • Kırmızı LED: Arduino 3 numaralı pine
  • Yeşil LED’i yakacak buton: Arduino 8 numaralı pine
  • Kırmızı LED’i yakacak buton: Arduino 9 numaralı pine

LED bağlantılarında her LED için seri direnç kullanılmalıdır. Buton bağlantılarında ise giriş pininin boşa düşmemesi gerekir. Bunun için harici pull-down/pull-up direnç kullanılabilir veya Arduino’nun dahili pull-up dirençleri INPUT_PULLUP ile aktif edilebilir.

Devre şemasında butonlar harici pull-down dirençlerle bağlandıysa, butona basılmadığında pin LOW, butona basıldığında HIGH okunur. Bu durumda aşağıdaki kod kullanılabilir.

// LED ve butonların bağlı olduğu pin numaraları
int ledPinYesil = 2;
int ledPinKirmizi = 3;
int butonPinYesil = 8;
int butonPinKirmizi = 9;

int butonDurumYesil;
int butonDurumKirmizi;

void setup() {
  pinMode(ledPinYesil, OUTPUT);
  pinMode(ledPinKirmizi, OUTPUT);

  // Harici pull-down direnç kullanılıyorsa INPUT kullanılabilir.
  pinMode(butonPinYesil, INPUT);
  pinMode(butonPinKirmizi, INPUT);
}

void loop() {
  butonDurumYesil = digitalRead(butonPinYesil);
  butonDurumKirmizi = digitalRead(butonPinKirmizi);

  if (butonDurumYesil == HIGH) {
    digitalWrite(ledPinYesil, HIGH);
    digitalWrite(ledPinKirmizi, LOW);
  } else if (butonDurumKirmizi == HIGH) {
    digitalWrite(ledPinYesil, LOW);
    digitalWrite(ledPinKirmizi, HIGH);
  }
}

Harici direnç kullanmak istemiyorsanız, Arduino’nun dahili pull-up dirençlerini kullanabilirsiniz. Bu yöntemde butonun bir ucu Arduino giriş pinine, diğer ucu GND hattına bağlanır. INPUT_PULLUP kullanıldığında butona basılmadığında HIGH, basıldığında LOW okunur.

// INPUT_PULLUP ile iki buton, iki LED uygulaması
int ledPinYesil = 2;
int ledPinKirmizi = 3;
int butonPinYesil = 8;
int butonPinKirmizi = 9;

void setup() {
  pinMode(ledPinYesil, OUTPUT);
  pinMode(ledPinKirmizi, OUTPUT);

  // Dahili pull-up dirençleri aktif eder.
  // Bu bağlantıda butonun bir ucu pine, diğer ucu GND'ye bağlanır.
  pinMode(butonPinYesil, INPUT_PULLUP);
  pinMode(butonPinKirmizi, INPUT_PULLUP);

  digitalWrite(ledPinYesil, LOW);
  digitalWrite(ledPinKirmizi, LOW);
}

void loop() {
  int butonDurumYesil = digitalRead(butonPinYesil);
  int butonDurumKirmizi = digitalRead(butonPinKirmizi);

  // INPUT_PULLUP kullanımında butona basılınca okunan değer LOW olur.
  if (butonDurumYesil == LOW) {
    digitalWrite(ledPinYesil, HIGH);
    digitalWrite(ledPinKirmizi, LOW);
  } else if (butonDurumKirmizi == LOW) {
    digitalWrite(ledPinYesil, LOW);
    digitalWrite(ledPinKirmizi, HIGH);
  }
}

Yukarıdaki devreyi doğru şekilde kurup Arduino kodlarını yüklediğinizde yeşil butona bastığınızda kırmızı LED söner ve yeşil LED yanar. Kırmızı butona bastığınızda ise yeşil LED söner ve kırmızı LED yanar.

Yorum Gönder

Daha yeni Daha eski