PCF8574 ile I2C Tuş Takımı Yapımı ve Arduino ile Kullanımı
Projelerimizde sistem üzerinden bazı ayarlar yapabilmek, bazı değerleri değiştirebilmek için tuş takımlarına ihtiyaç duyarız. 4×4 membran tuş takımı kolay biz çözüm olsa da 8 dijital pini gözden çıkarmamız gerekir Arduino ile kullanmak için. Bu yazımda da yine bir önceki yazımdaki gibi PCF8574 kullanarak matris tuş takımını(matrix keypad) I2C yolu üzerinden kullanmayı anlatmaya çalışacağm.
Gerekli Malzemeler:
- 1 adet 4×4 membran tuş takımı
- 1 adet PCF8574
- 4 adet 220 ? direnç
- Bağlantılar için kablo

Yukarıda şemasını verdiğim devreyi breadboard ya da delikli bakır plakete kurduktan sonra SDA-Arduino Analog4 ve SCL-Arduino Analog5 bağlantılarını yapıyoruz. Aşağıdaki bağlantılardan Keypad ve Keypad_I2C kütüphanelerini indirip yüklüyoruz. Bendeki tuş takımının konnektöründe 1 ve 8in ne taraf olduğu yazılıydı, eğer yazmıyorsa deneyerek pinleri bulmanız gerekiyor.
Aşağıda örnek bir program paylaşıyorum. Örnekte tuş takımından girilen değer serial monitörde yazdırılıyor. Kütüphane içerisinde birkaç örnek program da mevcut.
// PCF8574 I2C Tuş Takımı Örnek Programı // Yazar: Alexander Brevig // Düzenleme: İsmail BUÇGÜN // www.arduinoturkiye.com #include <Keypad_I2C.h> // Keypad_I2C kütüphanesini bağlıyoruz. #include <Keypad.h> // Keypad kütüphanesini bağlıyoruz. #include <Wire.h> // Wire kütüphanesini bağlıyoruz. // Tuş takımı için kullandığımız PCF8574 için adres. // PCF8574ün 1,2 ve 3. pinleri için toprak bağlantısı yapılırsa // bağlantı adresi 0x20 oluyor. #define I2CADDR 0x20 const byte ROWS = 4; // Tuş takımındaki satır sayısı const byte COLS = 4; // Tuş takımındaki sütun sayısı // Tuş takımı üzerindeki butonları matris şeklinde yazıyoruz. char hexaKeys[ROWS][COLS] = { {"1","2","3","A"}, {"4","5","6","B"}, {"7","8","9","C"}, {"*","0","#","D"} }; byte rowPins[ROWS] = {7, 6, 5, 4}; // Satıların konnektördeki pin numaraları byte colPins[COLS] = {3, 2, 1, 0}; // Sütunların konnektördeki pin numaraları // Yeni bir tuş takımı sınıfı oluşturuyoruz. Keypad_I2C customKeypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS, I2CADDR); void setup(){ customKeypad.begin( ); // Seri iletişimi başlatıyoruz. Serial.begin(9600); } void loop(){ // Tuş takımından gelen değeri customkey değişkenine atıyoruz. char customKey = customKeypad.getKey(); if (customKey != NO_KEY){ // Serial monitörde customkey değişkenini yazdırıyoruz. Serial.println(customKey); } }
PCF8574 yerine PCF8574A da kullanabilirsiniz aynı bağlantı şemasıyla. Fakat bağlantı adresini 0×38 şeklinde değiştirmek gerekiyor. Ayrıca bir önceki yazımdaki PCF8574lü I2C LCD ile birlikte I2C tuş takımı da kullanacaksanız PCF8574ün 2 numaralı pininde Gnd yerine 5v bağlantısı yaparak 0x22 şeklinde bağlantı adresi oluşturabilirsiniz.

İyi çalışmalar…
Gerekli Olabilecek Bağlantılar: