Button Box Nedir? Ne İşe Yarar?
Simülasyon oyunlarında gerçekçi bir deneyim yaşamak isteyenler için buttonbox, kullanıcıya ek kontrol butonları sağlayan özel bir cihazdır. Özellikle Euro Truck Simulator (ETS), American Truck Simulator (ATS) ve simülasyon tabanlı yarış oyunları gibi oyunlarda sıkça kullanılır. Buttonbox, klavye veya gamepad üzerindeki komutları fiziksel tuşlara, anahtarlara ve rotary encoder’lara taşıyarak daha ergonomik ve gerçekçi bir kontrol deneyimi sunar.
Buttonbox'un Avantajları:
Gerçekçilik: Fiziksel düğmelerle kontrol imkanı, oyun deneyimini artırır.
Ergonomi: Klavyede kısayol aramak yerine belirlenen düğmeler ile hızlı erişim sağlar.
Özelleştirilebilirlik: İhtiyaca göre düğme ve anahtar konumları ayarlanabilir.
Kolay Kullanım: Plug-and-play mantığında çalışarak oyun içinde kolayca tanımlanabilir.
Kendi buttonbox’unuzu yapmak için bazı temel bileşenlere ihtiyacınız olacak. Kullanacağınız malzemeler, tasarımınıza ve ihtiyaçlarınıza göre değişiklik gösterebilir. Ancak, temel olarak aşağıdaki parçalar gereklidir:
1. Mikro Denetleyici (Beyin Kısmı)
Buttonbox’unuzu bilgisayara bağlayıp oyun içinde kullanabilmek için bir mikro denetleyiciye ihtiyacınız var. İşte yaygın kullanılan modeller:
Arduino Pro Micro (Tavsiye edilir – Klavye/HID desteği vardır)
Arduino Leonardo (Pro Micro gibi direkt klavye komutları gönderebilir)
Arduino Uno (Joystick Kütüphanesi ile Kullanılabilir. Sadece Orjinal Uno ile Olur. CH340 ile başka bir konuda anlatımı olacak)
ATmega32u4 tabanlı diğer kartlar
2. Butonlar ve Anahtarlar
Buttonbox'un en önemli bileşeni olan butonlar ve anahtarlar, oyun içindeki kontrollerinizi belirler. Kullanabileceğiniz türler:
Basmalı Butonlar (Push Button) – Far, sinyal, vites değişimi gibi işlemler için idealdir.
Mandallı Anahtarlar (Toggle Switch) – Sürekli açık/kapanan kontroller için uygundur. Örneğin, motor çalıştırma veya diferansiyel kilidi için kullanılabilir.
Rotary Encoder – Radyo frekansı değiştirme, menüler arasında gezme gibi uygulamalarda kullanılır.
Potansiyometre (Opsiyonel) – Gaz, fren gibi analog girişler için düşünülebilir.
3. Kutu (Enclosure/Kasa)
Tüm bileşenleri yerleştirmek için uygun bir kutuya ihtiyacınız var. Kullanabileceğiniz malzemeler:
Ahşap veya MDF – Kolay işlenebilir ve dayanıklıdır.
Plexiglass veya Akrilik – Şeffaf ve estetik görünüm sağlar.
3D Baskı ile Özel Kasa – Kendi tasarımınızı yaparak özelleştirilebilir.
Hazır kutular - En Hızlı yöntem.
4. Kablo ve Lehim Malzemeleri
Bağlantılar için şu malzemeleri temin etmelisiniz:
Jumper Kabloları (Erkek-Dişi, Erkek-Erkek, Dişi-Dişi)
Lehim Teli ve Lehim Makinesi (Daha sağlam bağlantılar için önerilir)
Breadboard ve Dupont Kabloları (Prototip aşamasında işinizi kolaylaştırır)
5. USB Bağlantısı ve Montaj Malzemeleri
USB Kablosu (Mikro denetleyicinizi bilgisayara bağlamak için)
Vida, Somun ve Bağlantı Parçaları (Kasaya montaj için gerekli olabilir)
Etiketler veya Buton Kaplamaları (Buton işlevlerini belirtmek için şık bir görünüm sağlar)
Bu malzemeleri temin ettikten sonra, bağlantı şeması ve montaj aşamalarına geçebiliriz. Bir sonraki bölümde, Arduino ve butonları nasıl bağlayacağınızı ve devreyi nasıl kuracağınızı anlatacağız.
Button Box Yapımı İçin Gerekli Malzemeler
Buttonbox Devre Şeması ve Bağlantılar
Buttonbox’unuzu oluşturmak için gerekli malzemeleri temin ettiyseniz, şimdi devreyi kurma aşamasına geçebiliriz. Bu bölümde, butonların Arduino veya diğer mikro denetleyicilere nasıl bağlanacağını ve temel bağlantı prensiplerini ele alacağız.
1. Temel Bağlantı Mantığı
Arduino veya benzeri bir mikro denetleyici kullanarak butonları bağlarken şu temel prensipleri bilmelisiniz:
Dijital girişler (Butonlar ve Anahtarlar): Arduino’nun dijital pinlerine bağlanır.
Pull-Up Direnç Kullanımı: Butonların düzgün çalışması için dahili pull-up direnci etkinleştirilmelidir. (Arduino'da INPUT_PULLUP kullanılarak yapılır.)
Encoder Bağlantısı: Rotary encoder’lar, dijital girişlere bağlanarak döndürme yönü tespit edilir.
Topraklama (GND) Bağlantısı: Tüm buton ve anahtarlar, GND (toprak) hattına bağlanmalıdır.
2. Arduino ile Bağlantı Şeması
A) Basit Buton Bağlantısı (Push Button)
Bir butonun Arduino'ya nasıl bağlanacağını görelim:
Buton Bacağı Bağlanacağı Pin:
1. Bacak (Sağ veya Sol) Arduino Dijital Pin (Örn: D2)
2. Bacak (Diğer uç) GND (Toprak)
Kod Örneği (Basit Buton Okuma):
const int butonPin = 2;
void setup()
{ pinMode(butonPin, INPUT_PULLUP); // Dahili pull-up direnci etkinleştirildi
Serial.begin(9600); }
void loop()
{ if (digitalRead(butonPin) == LOW) { // Butona basılınca LOW olur
Serial.println("Butona basıldı!"); }
}
Bu kod, butona basıldığında seri port ekranına “Butona basıldı!” yazdıracaktır.
B) Toggle Anahtar Bağlantısı
Toggle anahtarlar, sürekli açık veya kapalı konumda kalır. Bu nedenle butonlarla aynı şekilde bağlanabilirler. Bir ucu dijital pine, diğer ucu GND’ye bağlanmalıdır.
Kod Örneği (Toggle Anahtar Okuma):
const int anahtarPin = 3;
void setup()
{ pinMode(anahtarPin, INPUT_PULLUP);
Serial.begin(9600); }
void loop()
{ if (digitalRead(anahtarPin) == LOW) { Serial.println("Anahtar Açık!"); } else { Serial.println("Anahtar Kapalı!"); }
delay(500);
}
C) Rotary Encoder Bağlantısı
Rotary encoder’lar, iki dijital pin (CLK ve DT) üzerinden bağlanır. Genellikle interrupt (kesme) destekli pinlere bağlanmaları önerilir.
Encoder Bacağı Bağlanacağı Pin:
CLK (Saat Darbesi) Arduino D2 (Kesme Pin)
DT (Veri Sinyali) Arduino D3 (Kesme Pin)
GND Arduino GND
Kod Örneği (Rotary Encoder Okuma):
#define CLK 2
#define DT 3
int currentStateCLK;
int lastStateCLK;
void setup()
{ pinMode(CLK, INPUT);
pinMode(DT, INPUT);
lastStateCLK = digitalRead(CLK);
Serial.begin(9600);
}
void loop()
{ currentStateCLK = digitalRead(CLK);
if (currentStateCLK != lastStateCLK) { if (digitalRead(DT) != currentStateCLK) { Serial.println("Saat yönünde döndü"); } else { Serial.println("Saat yönünün tersine döndü"); } }
lastStateCLK = currentStateCLK;
}
3. Button Box Bağlantı Şeması Örneği
Birden fazla buton ve anahtar içeren bir buttonbox devre şeması şu şekilde olabilir:
Dijital girişler (D2, D3, D4, …) → Butonlar ve toggle anahtarlar
Encoder girişleri (D5, D6) → Rotary encoder
GND bağlantıları → Ortak toprak hattı
Daha büyük projelerde MCP23017 veya PCF8574 gibi giriş-çıkış genişletici entegreler kullanarak buton sayısını artırabilirsiniz.
Sonraki Aşama: Kodlama ve Konfigürasyon
Bağlantıları tamamladıktan sonra button box’unuzu bilgisayara tanıtmak için kod yazmanız gerekecek. Bir sonraki bölümde, Arduino’nun HID (Human Interface Device) olarak nasıl kullanılacağını ve butonlara oyun içinde nasıl komut atayacağınızı anlatacağız.
Buttonbox için Arduino Kodlama ve HID Tanımlama
Buttonbox’unuzun donanımsal bağlantılarını tamamladıysanız, artık bilgisayara nasıl tanıtılacağını ve nasıl çalışacağını belirlemek için kodlama aşamasına geçebiliriz. Arduino Pro Micro veya Leonardo gibi ATmega32u4 tabanlı kartlar, HID (Human Interface Device) desteğine sahiptir. Bu sayede buton basışlarını klavye, joystick veya gamepad komutlarına çevirebiliriz
1. Arduino’yu HID Cihazı Olarak Tanımlama
Arduino Pro Micro veya Leonardo kullanıyorsanız, "Keyboard" ve "Joystick" kütüphaneleri ile doğrudan girişleri bilgisayara gönderebilirsiniz.
Öncelikle Arduino IDE'ye "Joystick" kütüphanesini eklememiz gerekiyor:
Arduino IDE’yi açın.
Araçlar → Kütüphane Yöneticisi bölümüne girin.
"Joystick" yazarak "Joystick by MHeironimus" kütüphanesini yükleyin.
Bu kütüphane, Arduino’yu gamepad veya joystick gibi tanıtmamıza olanak tanır.
2. Temel HID (Klavye) Buton Kodlaması
Aşağıdaki kod, bir butona basıldığında klavyeden belirli bir tuşu (örneğin "H") gönderen basit bir HID uygulamasıdır:
#include "Keyboard.h"
const int butonPin = 2; // Butonun bağlı olduğu dijital pin
void setup()
{ pinMode(butonPin, INPUT_PULLUP);
Keyboard.begin(); // Klavye emülasyonu başlatılıyor }
void loop()
{ if (digitalRead(butonPin) == LOW) { // Butona basıldıysa
Keyboard.press('H'); // 'H' harfini gönder
delay(100);
Keyboard.releaseAll(); // Tüm tuşları serbest bırak } }
Bu kod, butona basıldığında klavyeden “H” harfini gönderir. Böylece oyun veya simülasyon içinde bu tuş bir işlevi yerine getirebilir.
3. Joystick Modunda Button Box Kodlaması
Eğer buttonbox'unuzu bir joystick olarak tanıtmak isterseniz, Joystick kütüphanesini kullanmanız gerekir. Aşağıdaki kod, 6 butonlu basit bir joystick oluşturur:
#include <Joystick.h>
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD, 6, 0, false, false, false, false, false, false, false, false, false, false, false);
const int butonlar[] = {2, 3, 4, 5, 6, 7}; // Buton pinleri
void setup()
{ for (int i = 0; i < 6; i++) { pinMode(butonlar[i], INPUT_PULLUP); }
Joystick.begin(); }
void loop()
{ for (int i = 0; i < 6; i++)
{ if (digitalRead(butonlar[i]) == LOW) { Joystick.setButton(i, 1); }
else { Joystick.setButton(i, 0); } }
delay(10); }
Bu kodun yaptığı işlemler:
✅ Joystick olarak tanıtma → Arduino bilgisayara gamepad gibi görünür.
✅ 6 butonu algılama ve veri gönderme → Butonlar basıldığında oyun içinde bir tuşa atanabilir.
✅ Plug and Play olarak çalışır → Oyuna girdikten sonra joystick ayarlarından butonları atayabilirsiniz.
4. Oyun İçinde Butonları Tanımlama
Buttonbox’unuz çalıştığında oyun içinde tanımlamak için şu adımları izleyin:
🔹 ETS 2 / ATS İçin:
Oyunu açın ve Ayarlar > Kontroller menüsüne girin.
Gelişmiş Giriş Yapılandırması seçeneğini etkinleştirin.
Joystick veya Klavye Tuşları bölümünden butonlarınıza uygun fonksiyonları atayın.
🔹 Diğer Simülasyon Oyunları İçin:
Flight Simulator, Assetto Corsa, iRacing, DCS gibi oyunlarda giriş ayarlarından joystick girişlerini atayabilirsiniz.
Sonraki Bölüm: Kutu Montajı ve Son Ayarlar
Artık buttonbox’unuz yazılımsal olarak çalışıyor! Bir sonraki adımda kutunun montajı, kablo düzeni ve son ayarları yapacağız.
Buttonbox Montajı ve Son Ayarlar
Button box’unuzun devre bağlantılarını ve yazılımını tamamladıktan sonra, artık fiziksel montaj ve son düzenlemeleri yapabilirsiniz. Bu aşamada kutunun tasarımı, bileşenlerin yerleşimi, kablo yönetimi ve test işlemleri yer alıyor.
1. Kutu Tasarımı ve Malzeme Seçimi
Kendi button box’unuzu yaparken kullanabileceğiniz farklı malzemeler vardır:
✅ Ahşap (MDF veya Kontrplak) → Kolay işlenir, sağlam ve şık bir görünüm sağlar.
✅ Plexiglass / Akrilik → Şeffaf tasarımlar için uygundur.
✅ 3D Baskı ile Kasa → Kendi tasarımınızı oluşturabilirsiniz.
✅ Metal veya Alüminyum → Daha dayanıklı ve profesyonel bir görünüm sağlar.
📌 Öneri: Kendi ihtiyacınıza göre uygun ölçülerde bir kutu tasarlayabilir veya hazır bir elektronik kutu kullanabilirsiniz.
2. Buton ve Anahtarların Yerleşimi
Button box’unuzu kullanırken ergonomik olması önemlidir. Butonların ve anahtarların yerleşimi şu kriterlere göre yapılmalıdır:
🔹 En çok kullanılan butonlar en kolay ulaşılabilir yerde olmalı.
🔹 Rotary encoder veya potansiyometre, elinizle kolay döndürebileceğiniz bir konumda olmalı.
🔹 Toggle anahtarları yanlışlıkla çarpmayacağınız bir noktaya yerleştirin.
🔹 Tuşları gruplandırarak kullanımı kolaylaştırabilirsiniz. (Örn: Far, sinyal, fren gibi gruplamalar)
📌 Öneri: Tinkercad veya başka bir CAD programı ile buton deliklerinin yerleşimini önceden planlayabilirsiniz.
3. Montaj İşlemi
Kutunuzu hazırladıktan sonra şu adımları takip ederek bileşenleri monte edebilirsiniz:
A) Delik Açma ve Butonları Yerleştirme
Kutu üzerine butonlar için delik açın (Genellikle 12mm-16mm çapında olur).
Toggle anahtarları için uygun ölçülerde yuvalar oluşturun.
Rotary encoder’ler için daha küçük ve hassas delikler açmanız gerekebilir.
B) Bileşenleri Sabitleme
Butonları, anahtarları ve potansiyometreleri vidalar veya somunlarla sıkıca sabitleyin.
İç kısımdaki bağlantıları lehim veya jumper kablo ile yapın.
Kablo karmaşasını önlemek için zip tie (kablo bağı) veya sıcak silikon kullanabilirsiniz.
📌 Öneri: Bağlantı noktalarına etiket veya renkli kablo kullanarak düzen sağlayabilirsiniz.
4. USB Bağlantısı ve Test
Buttonbox’unuzun montajını tamamladıktan sonra artık bilgisayara bağlayarak test etme aşamasına geçebilirsiniz.
🔹 Arduino’yu USB ile bilgisayara bağlayın.
🔹 Arduino IDE veya "Windows USB Oyun Denetleyicileri" ekranını açarak tuşları test edin.
🔹 Her butonun doğru çalıştığını kontrol edin.
📌 Hata giderme:
Butona bastığınızda tepki vermiyorsa, GND bağlantısını kontrol edin.
Yanlış tuş basıyorsa, Arduino pin atamalarını kodda düzeltin.
Bilgisayar tanımıyorsa, Arduino sürücülerini yükleyin veya farklı bir USB kablosu deneyin.
Sonuç ve Sonraki Adımlar
Buttonbox’unuzu artık kendi ihtiyacınıza göre özelleştirebilir ve oyunlarda kullanabilirsiniz. Eğer ekstra özellikler eklemek isterseniz, şu konuları düşünebilirsiniz:
✅ RGB LED veya gösterge paneli ekleme
✅ Daha fazla buton veya ekstra joystick modülü entegre etme
✅ Buton sesleri ve haptik geri bildirim (titreşim motoru) ekleme
📌 Bu kılavuzu takip ederek kendi özelleştirilmiş button box’unuzu yapabilirsiniz! 🚀