Arduino Kütüphanesiz 4x3 Keypad Kullanımı

👤 Yazar: ozcan 📅 Tarih: 15.07.2026 11:28 👁️ Görüntüleme: 30

Arduino Kütüphanesiz 4x3 Keypad Kullanımı

Bu projemizde, harici hiçbir kütüphane (Keypad.h vb.) kullanmadan 4x3 tuş takımını (keypad) nasıl tarayacağımızı ve basılan tuşları nasıl tespit edeceğimizi öğreniyoruz. Satır ve sütun tarama mantığını kavramak için harika bir temel uygulamadır.

4x3 keypad bağlantısı

Gerekli Bağlantılar

  • Satır Pinleri: Arduino 8, 7, 6, 5 nolu dijital pinler
  • Sütun Pinleri: Arduino 4, 3, 2 nolu dijital pinler

arduino keypad bağlantı şeması

Arduino Kodları

// 4x3 KEYPAD KULLANIMI (KÜTÜPHANESİZ)

const byte SatirSayisi = 4; 
const byte SutunSayisi = 3; 

// Tuş matrisimiz
char keys[SatirSayisi][SutunSayisi] = { 
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};

byte SatirPinleri[SatirSayisi] = {8, 7, 6, 5}; 
byte SutunPinleri[SutunSayisi] = {4, 3, 2};    

void setup()
{
  Serial.begin(9600); 

  // Satır pinlerini ÇIKIŞ (OUTPUT) yapıyoruz ve başlangıçta HIGH (1) veriyoruz
  for (int i = 0; i < SatirSayisi; i++) {
    pinMode(SatirPinleri[i], OUTPUT);
    digitalWrite(SatirPinleri[i], HIGH);
  }

  // Sütun pinlerini GİRİŞ (INPUT_PULLUP) yapıyoruz. 
  // Dahili pull-up dirençleri sayesinde tuşa basılmadığında bu pinler HIGH okunur.
  for (int j = 0; j < SutunSayisi; j++) {
    pinMode(SutunPinleri[j], INPUT_PULLUP);
  }
}
 
void loop()
{
  char basilanTus = tusOku(); 
  
  if (basilanTus != '\0') { // Eğer geçerli bir tuş dönmüşse ('\0' değilse)
    Serial.println(basilanTus);
    delay(250); // Aynı tuşun arka arkaya yüzlerce kez okunmasını engellemek için küçük bir gecikme
  }
}

// Kütüphanenin yaptığı tarama işlemini yapan fonksiyon
char tusOku() {
  for (int s = 0; s < SatirSayisi; s++) {
    // İlgili satırı LOW (0) yapıyoruz (Testi başlatıyoruz)
    digitalWrite(SatirPinleri[s], LOW);

    for (int c = 0; c < SutunSayisi; c++) {
      // Eğer bu sütun LOW okunuyorsa, kullanıcı o satır ve sütundaki tuşa basıyor demektir
      if (digitalRead(SutunPinleri[c]) == LOW) {
        // Diğer taramaları bozmamak için satırı tekrar HIGH yapıp tuşu döndürüyoruz
        digitalWrite(SatirPinleri[s], HIGH);
        return keys[s][c]; 
      }
    }

    // Test bitince satırı tekrar eski haline (HIGH) getiriyoruz
    digitalWrite(SatirPinleri[s], HIGH);
  }
  
  return '\0'; // Hiçbir tuşa basılmadıysa boş karakter döndür
}

Çalışma Mantığı

Yazdığımız tarama algoritması, her satırı sırayla LOW (yani 0 volt) seviyesine çeker. O sırada sütunları dinleriz. Eğer o satır LOW iken sütunlardan biri de LOW değerine düşmüşse, fiziksel olarak o tuşa basılarak devre tamamlanmış demektir. Kodumuz basılan tuşun karakterini döndürdükten sonra satırı tekrar eski haline (HIGH) getirerek taramaya devam eder.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1