Leonardo в качестве мозгов для игрового руля
- Войдите на сайт для отправки комментариев
Чт, 23/11/2017 - 00:40
Не подумайте, не собираюсь спрашивать как это сделать ))) вопрос именно по программированию.
Коротко: уже работает, но - в игре как бы сбита индикация педалей... короче
педаль не нажата - показывает когбудто нажата на 20%
нажимаем педаль - индикация показывает, что педаль нажимается, но посередине хода педали показывает, что уже педаль нажата полностью
продолжаем нажимать педаль - индикация показывает, что педаль когбудто опустили и опять нажимем, т.е. сбрасывается в 0% и опять начинает расти.
Вышел из ситуации так:
void loop() { int xAxis = analogRead(A0); // Считываем аналоговое значение оси Х if (xAxis > 730) { Joystick.setXAxis(640); //смещение на 90 } else { Joystick.setXAxis(xAxis-90); } delay(50); }
верный ли костыль прикрутил или нужно координально по другому выходить из ситуации?
П.С. используется библиотека Joystick
верный ли костыль прикрутил
Смотря чего Вам хотелось получить. Так, как это написано, Вы лишаетесь той части хода педали, когда результат >730, т.к. что бы там ни было (жим - не жми) Вы всё равно в 640 преобразуете.
Там потенциометры педалей, наверняка не доходят до крайних значений (чтобы не сломать их - см. об этом). Поэтому я бы делал так. Выводил бы в сериал результат analogRead и смаппировал бы получаемый с педали диапазон на 0-255 для последующей передачи на двигатель. именно смаппировал бы равномерно, а не переломил по одному конкретному значению, как у Вас. Вы понимаете, о чём я?
Для начала - прикольно, у меня именно такой руль ), но переделаный, об этом ниже
Смотря чего Вам хотелось получить. Так, как это написано, Вы лишаетесь той части хода педали, когда результат >730, т.к. что бы там ни было (жим - не жми) Вы всё равно в 640 преобразуете.
Видимо не очень понятно объяснил... у меня педали переделаные и в место резюков стоят там теперь датчики холла, более того, вообще педальный блок сделан с нуля и по этому видимо ход педалей больше чем у заводских и получается за одно нажатие у меня шкала в игре 2 раза заполняется, т.е. от 0 до 100%, потом опять от 0 до 100%... при этом еще и смещение есть, т.е. не от 0 до 100, а от 50.
Там потенциометры педалей, наверняка не доходят до крайних значений (чтобы не сломать их - см. об этом). Поэтому я бы делал так. Выводил бы в сериал результат analogRead и смаппировал бы получаемый с педали диапазон на 0-255 для последующей передачи на двигатель. именно смаппировал бы равномерно, а не переломил по одному конкретному значению, как у Вас. Вы понимаете, о чём я?
Буквально 20 минут назад я бы не понял о чем вы ))), но наткнулся на видос, где об этой функции рассказали )
Ход у меня не от 0 до 1023, а от 600 до 800, но использовав этот map решил мою проблему одной строкой, но... основание педалей не 100% жесткое, т.е. когда выжимаешь ее на 100% можно еще немного надавить и она нажмется на 105% и вот тут косяк выходит в игре. При таком дожатии в игре на второй круг уходит заполнение, т.е. опять с нуля... в моем коде когда достигается некого максимального значения я тупо ограничиваю посылаемое значение
и хоть сколько не дави педаль на второй круг не пойдет, а mapом получается или не доходит до 100% или легко может в 0 свалиться.
П.С. если не очень понятно, что за "второй" круг, то просто подключите другой, не ограниченный по ходу, потенциометр и увидите, что от минимального до максимального значения потенциометра в игре или в настройках руля в винде педаль будет несколько раз заполняться от 0 до 100%
Поставьте перед мапом условие - при превышении максимума заменить на значение максимума. Так же и с минимумом, но на снижении.
Поставьте перед мапом условие - при превышении максимума заменить на значение максимума. Так же и с минимумом, но на снижении.
Да, но тогда в чем будет существенная разница между моим "кривокодом" и использованием мапа?