Педали руля для самостоятельной сборки для Flight Simulator
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 4 |
Об этом проекте
Обновление 2021 года
Новая версия педалей имеет HID-интерфейс и улучшенный дизайн. Усовершенствованный модуль датчиков на эффекте Холла обеспечивает очень точное управление. Подробности на моем сайте.
Привет, симуляторы! Я изобрел и изготовил педали для авиасимулятора, основную функцию которого выполняет Arduino. И я очень хочу поделиться с вами этой разработкой. Оказалось, что такие педали можно сделать за два дня, но чтобы описать процесс их создания, нужно две недели. Поэтому я сделал несколько видеороликов, показывающих этот процесс максимально подробно.
Изготовление педалей
Arduino можно подключить к симулятору полета двумя способами. Ссылка на цифровое соединение с использованием библиотеки ArduinoJoystickLibrary и платы Arduino Micro здесь.
Я подключаю свои педали аналоговым соединением. И приведенный здесь эскиз относится к этому способу подключения.
Оба этих метода, создание схемы и настройка датчиков показаны в следующем видео.
Датчики и электроника
Мне очень интересно ваше мнение об этой конструкции, оставляйте, пожалуйста, свои комментарии.
Код
- Аналоговый вывод через digiPOT.
Аналоговый вывод через digiPOTs Arduino
#include#define CS_RUDDER 10 #define CS_LEFT 8 #define CS_RIGHT 9 #define SENSOR_LEFT_PEDAL A6 #define SENSOR_LEFT_PEDAL A6 #define SENSOR_LEFT_PEDAL A6 #define SENSOR_LEFT_PEDAL A6 #define SENSOR_RIGHT_PEDAL A5 #define SENSOR_RUDDER_LEFT A0 # define SENSOR_RUDDER_LEFT_VALDER_VALDER_RUDER_RUD_VALDER_VALDER_RUDDER_VALDER_VALDER_VALDER_RUD val_brake_right, remap_brake_left, remap_brake_right; int tuning_rudder =128; // int tuning_left_brake =255; // int tuning_right_brake =255; void setup () {Serial.begin (9600); SPI.begin (); pinMode (CS_RUDDER, ВЫХОД); pinMode (CS_LEFT, ВЫХОД); pinMode (CS_RIGHT, ВЫХОД); } void loop () {// ------------------------------------------ -------------- // ПЕДАЛИ РУЛЯ -128 --- x --- 128 // -------------------- ------------------------------------ // Чтение и переназначение датчика RUDDER LEFT val_left =analogRead (SENSOR_RUDDER_LEFT); если (val_left <=950) {remap_left =map (val_left, 30, 870, -128, 0); // -40} иначе remap_left =0; // Устанавливаем ограничения RUDDER LEFT if (remap_left> 0) remap_left =0; если (remap_left <=-128) remap_left =-128; // Считываем и переназначаем датчик RUDDER RIGHT val_right =analogRead (SENSOR_RUDDER_RIGHT); если (val_right <=950) {remap_right =map (val_right, 0, 820, 132, 0); // -50} иначе remap_right =0; // Устанавливаем ограничения RUDDER RIGHT if (remap_right <0) remap_right =0; если (remap_right> =127) remap_right =127; руль =remap_left + remap_right; если (remap_left ==0) {tuning_rudder =tuning_rudder + 128; } else {tuning_rudder =abs (tuning_rudder - 128); } // ----------------------------------------------- --------- // ТОРМОЖЕНИЕ // ------------------------------------ -------------------- val_brake_left =analogRead (SENSOR_LEFT_PEDAL); если (val_brake_left <=328) {remap_brake_left =map (val_brake_left, 200, 328, 0, 255); } иначе remap_brake_left =255; если (remap_brake_left <0) remap_brake_left =0; val_brake_right =аналоговое чтение (SENSOR_RIGHT_PEDAL); если (val_brake_right <=328) {remap_brake_right =map (val_brake_right, 200, 328, 0, 255); } иначе remap_brake_right =255; если (remap_brake_right <0) remap_brake_right =0; / * // НАСТРОЙКА ARDUINO // Настройка нейтральных датчиков Serial.print (val_left); Serial.print ("|"); Serial.println (val_right); задержка (400); // Настройка вывода Serial.print (remap_brake_left); Serial.print ("|"); Serial.println (remap_brake_right); Serial.print ("|"); Серийный принт (руль направления); Serial.print ("|"); Serial.println (tuning_rudder); delay (400); * / // ----------------------------------------- --------------- // ОТПРАВИТЬ ДАННЫЕ НА digiPOT // --------------------------- ----------------------------- digitalWrite (CS_RUDDER, LOW); SPI.transfer (0b00010001); SPI.transfer (tuning_rudder); digitalWrite (CS_RUDDER, HIGH); задержка (5); // Задержка сглаживания данных по времени digitalWrite (CS_LEFT, LOW); SPI.transfer (0b00010001); SPI.transfer (remap_brake_left); digitalWrite (CS_LEFT, HIGH); задержка (5); digitalWrite (CS_RIGHT, LOW); SPI.transfer (0b00010001); SPI.transfer (remap_brake_right); digitalWrite (CS_RIGHT, HIGH); задержка (5);}
Схема
Производственный процесс
- ЖК-панель с Arduino для симулятора полета
- Вольтметр своими руками с использованием Arduino и смартфона
- Скейтборд виртуальной реальности «Сделай сам»
- Сделай сам Arduino РАДИОНИКА Лечение MMachine
- Мониторинг температуры SMART для школ
- 8-битная библиотека портов ввода-вывода для Arduino
- 64-клавишная матрица клавиатуры для прототипирования для Arduino
- Самодельный двухмерный гоночный симулятор
- Уловки для управления двигателями постоянного тока
- Детектор молний для Arduino