#include <Joystick.h>
#include <SPI.h>
// DFGT Shift Register pinleri
#define LOAD_PIN 4 // Yellow kablo (PL)
#define NUM_BUTTONS 24 // 3 adet 74HC165 x 8 bit
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_JOYSTICK,
NUM_BUTTONS, 0,
false, false, false,
false, false, false,
false, false, false);
void setup() {
pinMode(LOAD_PIN, OUTPUT);
digitalWrite(LOAD_PIN, HIGH); // Yüksek başlasın
SPI.begin(); // SPI başlat
SPI.setClockDivider(SPI_CLOCK_DIV128);
SPI.setDataMode(SPI_MODE0);
SPI.setBitOrder(MSBFIRST);
Joystick.begin(); // Joystick başlat
}
void loop() {
digitalWrite(LOAD_PIN, LOW);
delayMicroseconds(5); // Load süresi
digitalWrite(LOAD_PIN, HIGH);
byte buttonBytes[3];
for (int i = 0; i < 3; i++) {
buttonBytes = SPI.transfer(0x00);
}
for (int byteIndex = 0; byteIndex < 3; byteIndex++) {
for (int bitIndex = 0; bitIndex < 8; bitIndex++) {
bool pressed = !(buttonBytes[byteIndex] & (1 << bitIndex)); // Aktif düşük
int buttonNumber = byteIndex * 8 + bitIndex;
Joystick.setButton(buttonNumber, pressed);
}
}
delay(5); // Yumuşak güncelleme
}