Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
adn88 opened this issue Feb 20, 2024 · 3 comments
Open

Comments

@adn88
Copy link

adn88 commented Feb 20, 2024

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

@vsulako
Copy link
Owner

vsulako commented Feb 21, 2024

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

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

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

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

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

изображение

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

@adn88
Copy link
Author

adn88 commented Feb 21, 2024

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

@adn88
Copy link
Author

adn88 commented Mar 1, 2024

Спасибо за информацию. Заработали кнопки как положено, только второй ряд 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 неинформативная и какая-то вялая.
Спасибо за ваш труд и удачи.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants