PCF8574 ile I2C Tuş Takımı Yapımı ve Arduino ile Kullanımı
Ä°smail // 10 AÄŸustos 2012 // 11 yorum // kategori: Arduino Eklentileri(Shield), Arduino ProjeleriProjelerimizde 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:
Etiketler: 4x4 Matris Tuş Takımı > 4x4 Membran Tuş Takımı > 4x4 Tuş Takımı > arduino > Arduino 4x4 Tuş Takımı > Arduino ve i2c > Arduino ve i2c Tuş Takımı > Arduino ve PCF8574 > Arduino ve Tuş Takımı > i2c > i2c Tuş Takımı Yapımı > PCF8574 > PCF8574 Tuş Takımı > PCF8574A > Tuş Takımı > two wire
Keypad_I2C librarysini hiç biryerde bulamadım
i2ckeypad diye buluyorum onuda çalıştıramıyorum
nerden bulurum bu dosyayı bi yardımcı olabilir misiniz
şimdiden teşekkürler
kaynak kodu buradan kullan http://playground.arduino.cc/Main/I2CPortExpanderAndKeypads#.Uxqykc6habM veya buradan bak http://bradsduino.blogspot.com.tr/2013/01/i2c-version-of-using-4×4-universal-16.html birde ÅŸu http://playground.arduino.cc/Code/Keypad#.Uxqzjs6habM birde i2c protolunu anlamamışın ÅŸuraya bir bak http://www.arduino.cc/en/Reference/Wire#.Uxqz786habM
Keypad_I2C librariyi kodlarını buldum kendim uzantılarına göre oluşturdum
ama haberleşmeyi #define I2CADDR 0x20 yerine 0x38 oldu PCF8574P kullandım
ama son sütunlar çalışmıyor ABCD Rakamlarının olduÄŸu tuÅŸlar çalışmadı 4×4 deÄŸilde sanki 4×3 tuÅŸ gibi çalışdı ben elektrik – elektronikçi deÄŸilim merakımdan yeni öğrenmeye baÅŸlıyorum
senin keypadin uçları şeması farklı olabilir uçlarını tespit edip oyle bağla hatta arızalı bile olabilir.
merhabalar, öncelikle çalışmalarınızdan yoğun biçimde faydalanmaktayım teşekkür ederim. ben PCF8574 ile hem keypad hem de LCD kullanmak istiyorum. fakat ikisininde örneğinde A4 ve A5 pinleri kullanılmakta.. bu pinler sanırım bu kütüphaneler için sabit.. nasıl bir çözüm bu konuda?
şimdiden teşekkürler
şu linkte var http://skyduino.wordpress.com/2011/06/07/librairie-arduino-i2c-pour-le-pcf8574/ fransızca.
Fransızca olması sıkıntı biraz ama yine de teşekür ederim, iyi çalışmalar
Çoklu değer alıp girilen 2-3-4-5 haneli her neyse bu değerleri atıyorum # karakretini enter gibi kullanıp ne kadar sayı girilmişse bir değişken içine atıp nasıl kullanabiliriz. Basit bir örnek yazma şansınız var mı?
TeÅŸekkürler…
teşekkürünüze teşşekkür önce bu devreyi yapıp biraz kandi çabanızla kod yazıp nerede takıldığınızı sorsanız iyi olacaktı. herkese tek tek yatecek kadar vaktimiz yok ama kodunuz varsa biraz bakıp hatanızı bulmamız daha kolay olabilirdi.
bana arduni uno ile 1 potasiyometre baglayıp binary olarak 12 bit çıkış almak istiyorum bana yardımcı olabilirmisiniz
arduino adc 10bittir map komutu ile 12 bite geniÅŸletebilirsin ama sonucta yine 10bit cozunurlukte olur aralıklar. foruma gelin sorun. yazı konusu dışında soru sormayın bu iÅŸler için forum icad edildi…