
Arduino ile büyük ve mekanik aç-kapa anahtarlı bir kontrol panelini daha küçük, daha modern ve kullanımı rahat bas-bırak butonlarla yeniden kurmak için hazırlanmış pratik bir proje. Temel mantık oldukça kullanışlıdır: butona bir kez basıldığında ilgili çıkış aktif olur, tekrar basıldığında pasif hale gelir ve sistem enerjisi kesilip geri geldiğinde son durum hafızadan geri okunur.
Devre, Arduino Nano ile hazırlanmış olsa da Arduino Uno veya Arduino Pro Mini ile de değişiklik yapılmadan çalışabiliyor.
Arduino tarafına yeni başlayanlar için temel Arduino mantığını bilmek, bu devredeki giriş-çıkış ve hafıza ilişkisinin daha kolay anlaşılmasını sağlar.
Burada iki farklı tasarım var. İlk versiyonda çıkış sayısını artırmak için MCP23017 I2C port genişletici ve durum bilgisini saklamak için 24C02 harici EEPROM kullanılıyor.
İkinci versiyon ise daha sade; çıkışlar doğrudan Arduino pinlerinden alınıyor ve durumlar mikrodenetleyicinin kendi EEPROM alanına yazılıyor.
Hangisinin daha uygun olduğu, ihtiyaç duyulan kanal sayısına ve uzun vadeli kullanım beklentisine göre değişir.
İki farklı versiyonun farkı
İçerik
| Versiyon | Ana elemanlar | Avantajı | Sınırı |
|---|---|---|---|
| Harici EEPROM + port genişletici | Arduino Nano, MCP23017, 24C02, 7805 | Daha fazla çıkış hattı, daha esnek genişleme, iç EEPROM yükünü azaltma | Devre daha karmaşık, açılışta çok kısa süreli çıkış flaşı görülebilir |
| İç EEPROM kullanılan basit versiyon | Arduino Nano, 7805 | Daha az parça, daha düşük maliyet, daha kolay kurulum | Pin sayısı sınırlı, sık yazma yapılan uygulamalarda iç EEPROM ömrü daha kritik |

Devrenin çalışma mantığı
Butonlara basıldığında Arduino ilgili girişleri okur, çıkışın yeni durumunu belirler ve bunu hafızaya kaydeder.
Sonraki enerji verilişinde bu bilgi tekrar okunarak LED, röle veya başka bir çıkışın kaldığı yerden devam etmesi sağlanır.
Böylece klasik kilitlemeli mekanik anahtar hissi, taktil butonlarla yazılımsal olarak elde edilmiş olur.
Harici hafızalı yapıda DD2 MCP23017 entegresi, Arduino’nun sınırlı çıkış sayısını rahatlatır.
Şemada LED’ler bu çıkışlara bağlanmış olsa da aynı hatlar röle sürme, panel göstergesi veya farklı kumanda katları için de kullanılabilir.
Arduino Hafızalı Buton Devre Şemaları
İlk şema harici EEPROM ve MCP23017 kullanılan genişletilmiş sürümü, ikinci ise daha sade olan iç EEPROM’lu sürümü temsil eder.
Projenin güzel tarafı, aynı fikrin hem daha profesyonel hem de daha ekonomik iki ayrı seviyede uygulanabilmesidir.
Uygulama alanı da oldukça geniştir; basit panel kumandalarından seçici devrelere, mod hafızalı cihazlardan özel kontrol yüzeylerine kadar pek çok yerde kullanılabilir.

Özellikle birden fazla kanalın bağımsız tutulması gereken panellerde bu yöntem oldukça kullanışlıdır.
Ses giriş seçici, mod seçici veya benzeri panel işlerinde bu yapı uzaktan kumandalı giriş seçici gibi projelere de kolayca uyarlanabilir.
Harici hafıza tarafında DD1 24C02 kullanılması önemli bir tercih. Geçmiş tecrübelerde, çok sık yaz-sil yapılan uygulamalarda mikrodenetleyicinin kendi EEPROM’una yük binmesini azaltmak için bu yöntem tercih ediliyor.
Ayrıca 24C02 ucuz, kolay bulunan ve gerektiğinde değiştirilebilen bir parça. İstenirse uygun kütüphane değişikliğiyle 24C serisinin başka üyeleri de kullanılabilir.
Şemada R1 ve R2 4.7K dirençleri I2C hattının pull-up dirençleri olarak görev yapıyor. IC1 7805 ise 12V girişten Arduino ve yardımcı entegreler için 5V besleme üretiyor.
Bu nedenle besleme hattının temiz olması, toprak bağlantılarının düzgün dağıtılması ve özellikle panel kabloları uzuyorsa buton hatlarının gürültü toplamamasına dikkat edilmesi gerekir.
MCP23017 kullanılan versiyon neden tercih edilir
Arduino’nun giriş-çıkış sayısı sınırlı olduğunda MCP23017 oldukça rahatlatıcı bir çözümdür.
Bu entegre 16 bit I/O genişletme sağlar ve I2C üzerinden haberleştiği için çok az pin kullanarak fazla sayıda çıkışa ulaşılabilir.
Adresleme uygun yapıldığında aynı hatta birden fazla genişletici bağlamak da mümkündür. Bu da özellikle çok butonlu kontrol panellerinde büyük kolaylık sağlar.
Buradaki tasarım, 74HC595 yerine MCP23017 kullanılması yönünde. Bunun nedeni sadece daha fazla çıkış elde etmek değil, aynı zamanda önceki denemelerde istenen kararlılığın alınamaması.
Bu açıdan bakıldığında tercih mantıklı görünüyor. Yine de çok daha az kanal gereken durumlarda ikinci, daha sade versiyonun pratikte daha cazip olabileceği unutulmamalı.
Daha basit iç EEPROM’lu versiyon ne zaman daha mantıklı
Çıkış sayısı azsa, devrenin mümkün olduğunca sade ve ucuz olması isteniyorsa iç EEPROM kullanılan sürüm daha mantıklı hale geliyor.
Bu versiyonda harici hafıza ve port genişletici kalktığı için hem lehimleme süresi kısalıyor hem de kart boyutu küçülüyor.
Ayrıca açılış anındaki MCP23017 kaynaklı kısa süreli çıkış sıfırlanması da görülmüyor.
Buna karşılık sistem çok sık durum kaydı yapacaksa, iç EEPROM yazma ömrü daha fazla önem kazanır.
Bu yüzden proje uzun süre yoğun kullanılacaksa harici EEPROM hala değerli bir çözümdür.
Arduino modülü yerine doğrudan ATMEGA8, ATMEGA168 veya ATMEGA328 kullanmak isteyenler için de bu mantık uygundur.
Bu yönde ilerlemek isteyenler ATmega8 ile doğrudan yapılan uygulamalara da göz atabilir.
Uygulamada gözden kaçabilen teknik ayrıntılar
- LED yerine röle sürülecekse çıkış pinlerine röle doğrudan bağlanmamalıdır. Transistör, MOSFET ya da ULN2803 gibi sürücü katı ve bobin üzerine ters paralel diyot eklemek daha doğru olur.
- Buton kabloları uzunsa parazit nedeniyle yanlış tetikleme görülebilir. Yazılımsal debounce yanında iyi topraklama ve düzenli kablolama da önemlidir.
- 7805 regülatör 12V girişte fazla ısınıyorsa küçük bir soğutucu veya daha verimli bir ön regülasyon düşünülebilir.
- Harici kütüphaneler eksikse proje derlenmez. MCP23017 ve 24C01/24C02 için kullanılan kütüphanelerin çalışma klasöründe bulunması gerekir.
- Her çıkışı ayrı hafıza hücresine yazmak tek bir adrese sürekli yük binmesini azaltır. Bu küçük detay uzun vadede faydalıdır.
Gözlemlenen dezavantajlar: Harici EEPROM + MCP23017 kullanılan versiyonda besleme her verildiğinde, Arduino kontrolü başlamadan önce MCP23017 tüm çıkışları çok kısa süre “0” durumuna çekebilir.
Videoda tüm LED’lerin aynı anda kısa bir flaş yapması bundan kaynaklanır. Birçok uygulamada sorun olmaz; ancak röle, mute hattı ya da kritik bir kontrol çıkışı sürülecekse bu ayrıntı göz önünde bulundurulmalıdır. Harici EEPROMsuz daha basit versiyonda bu davranış yoktur.
Özetle bu proje, mekanik kilitlemeli anahtarların yerini daha küçük taktil butonlarla almak isteyenler için oldukça işe yarar bir çözüm sunuyor.
Kanal sayısı artacaksa MCP23017 + 24C02’li yapı daha esnek, az sayıda hat yeterliyse iç EEPROM’lu sürüm daha sade. Doğru seçilmiş sürücü katı, temiz besleme ve düzgün yazılım ile uzun süre sorunsuz çalışabilecek bir kontrol paneli elde etmek mümkün.
Kaynak: kn34pc.com/construct/lz2wsg_arduino_tactile_sw.html
Arduino Hafızalı Butonlar projesine ait kaynak arduino ve kütüphane kodları;