vsulako / AFFBWheel

Arduino based racing wheel controller with force feedback
MIT License
102 stars 20 forks source link

Проблема с подключением кнопок руля G27 #55

Open adn88 opened 9 months ago

adn88 commented 9 months ago

Подскажите пожалуйста как решить. Имеется руль от логитека g27. Внутри на плате распаяны две микросхемы одна 74hc165d на кнопки и другая hc595ag на светодиоды. Подключился к 74hc165d согласно схеме но первый ряд кнопок работает наоборот, то есть нажаты все 16 кнопок когда кнопки физически не нажаты, когда физически нажимаешь на кнопку она отжимаеться в свойствах джойстика виндовс. Может кто знает как их инвертировать?

vsulako commented 9 months ago

Наверное, кнопки там разведены иначе - подтянуты к GND, а при нажатии замыкаются на VCC.

Можно переделать подключение кнопок. Скорее всего, будет сложно.

Можно инвертировать в прошивке. Строки 860-880, if (!digitalReadFast(...)) в нужных местах (для DATA1 или DATA2) заменяем на if (digitalReadFast(...)), т.е. убираем инвертирование "!".
Однако при обновлении прошивки придется менять снова.

Еще можно инвертировать транзистором.
Любой N-канальный полевой транзистор логического уровня, например IRLML2502, и резистор 1-10кОм.

Подключение такое:

изображение

DATA IN - линия DATA от регистра, DATA OUT - ко входу Arduino.

adn88 commented 9 months ago

Спасибо за быстрый ответ, позже отредактирую код в прошивке.

adn88 commented 9 months ago

Спасибо за информацию. Заработали кнопки как положено, только второй ряд 8 кнопок были всегда нажаты, на руле только 8 кнопок и одна микросхема. Немного подредактировал код заработали как положено. Вот таким образом.

if BUTTONS_TYPE == BT_74HC165

ifdef HC165_PIN_PL

digitalWriteFast(HC165_PIN_PL,1);  

else

digitalWriteFast(HC165_PIN_SCK, 0);
digitalWriteFast(HC165_PIN_SCK, 1);  

endif

i=0x80; do {
if (digitalReadFast(HC165_PIN_DATA1)) d[0]|=i;

  digitalWriteFast(HC165_PIN_SCK, 0);
  digitalWriteFast(HC165_PIN_SCK, 1);  

} while(i>>=1);

ifdef HC165_PIN_PL

digitalWriteFast(HC165_PIN_PL,0);  

endif

endif

Подозреваю что все остальные каналы кнопок я отключил, да мне они и не нужны. Для теста обратной связи и кнопок на руле мне хватило. Первое что могу сказать как пользователь руля логитек g27, очень малая сила центрирования руля в повороте. В assetto corsa competizione еще можно как-то настроить но вот в том же race 07 она отсутствует напрочь. Может что-то не донастроил, времени больше не было. Удивила возросшая точность, эффекты вибрации при жестком торможении и на грани сцепления с трассой. Все тестировал на том же железе логитека 27, моторы, энкодер и блок питания родные. Может позже будет время дотестирую. Оригинальная обратная связь после вашей реализации AFFB неинформативная и какая-то вялая. Спасибо за ваш труд и удачи.