Merhaba Hasan Bey,
Joystickinizin bağlantı pinlerinden (SCK, SDA, VCC, GND) anladığım kadarıyla, joystick doğrudan I2C haberleşmesi yapan bir mikrodenetleyiciye veya kontrol modülüne bağlı. Piyasada I2C çıkışlı joystick modülleri çok yaygın değil, ancak birkaç çözüm önerebilirim:
- Hazır I2C Joystick Modülü Bulma
Bazı üreticiler, I2C çıkışlı joystick modülleri üretiyor. Örneğin:
Adafruit 2765 (I2C ile çalışan analog joystick)
SparkFun Qwiic Joystick
PS2 joystick modülü + ADS1115 (ADC ve I2C çıkışlı)
Ancak, bu tür modüllerin direkt olarak engelli aracınıza uyumlu olup olmayacağını garanti edemem.
- Arduino ile Çözüm Üretmek
Eğer hazır bir I2C joystick modülü bulamazsanız, Arduino kullanarak potansiyometreli joysticki I2C çıkışlı bir modüle dönüştürebilirsiniz.
Gerekli Malzemeler:
Arduino (Nano veya Pro Mini önerilir)
İki eksenli potansiyometreli joystick (XY Joystick)
ADS1115 (16-bit ADC modülü, çünkü joystick analog çıkış verir ama sizin sisteminiz I2C bekliyor olabilir)
Bağlantı kabloları, lehim ekipmanları
Çalışma Prensibi:
Potansiyometreli joystickin X ve Y eksenlerinden gelen analog voltajı Arduino okuyacak.
Arduino, bu analog değerleri I2C protokolü ile engelli arabanızın kontrol kartına gönderecek.
Alternatif Yöntem:
Eğer sisteminiz PWM veya Analog voltaj bekliyorsa, Arduino kullanmadan ADS1115 (I2C çıkışlı ADC modülü) ile doğrudan I2C çıkışı elde edebilirsiniz.
Örnek Kod:
#include <Wire.h>
#define I2C_ADDRESS 0x10 // Engelli aracının kontrol kartına uyacak şekilde adresi belirleyin
int xValue = 0;
int yValue = 0;
void setup() {
Wire.begin(I2C_ADDRESS); // I2C Slave modunda başlat
Wire.onRequest(requestEvent); // Master cihaz veri istediğinde çalışacak fonksiyon
}
void loop() {
// X ve Y ekseni değerlerini oku (0-1023)
xValue = analogRead(A0);
yValue = analogRead(A1);
delay(100); // Gereksiz veri yükünü azaltmak için küçük bir bekleme süresi
}
void requestEvent() {
// X ve Y ekseni değerlerini 0-255 arasına ölçekleyerek gönder
Wire.write(map(xValue, 0, 1023, 0, 255));
Wire.write(map(yValue, 0, 1023, 0, 255));
}!<