(098) 067-12-26 Киевстар (098) 067-12-26   Киевстар
(066) 142-24-48 Vodafone (066) 142-24-48   Vodafone
(098) 067-12-26 Lifecell (063) 642-36-59   Lifecell
 info@arduino.ua
График работы магазина:
Пн-Пт: 9.00 - 19.00
Сб: 10.00 - 19.00
Вс: выходной
г. Киев, ул. Васильковская, 30
ст.м. "Васильковская"
Каталог

Як приучити дитину спати без світла і не боятись темноти

Як приучити дитину спати без світла і не боятись темноти? Малі діти не можуть спати без світла, бо бояться темноти. Але ж спати в темноті ліпше, ніж при світлі. Мій проект - лампа на пульті дозволить рішити питання.

Микроконтроллеры семейства STM8

Компания STMicroelectronics выпускает 2 основные линейки микроконтроллеров (далее МК): 8ми разрядные STM8 и 32х разрядные STM32 (на ядре Cortex).МК семейства STM8 обладают меньшей производительностью чем STM32, но при этом обладают следующими

Лазерний гравер на базі кульмана

Іноді постає питання в гравіюванні великої площі. Для вирішення цієї задачі і було затіяно даний проект при відносно не великій його вартості. В інтернеті легко знайти багато готових проектів плотерів, лазерних граверів і навіть 3д принтерів на базі

Светодиодное освещение рабочего стола на Arduino

Хороший свет на рабочем месте всегда был одним из главных “пунктиков” для меня. Особенно когда сидишь ночью в темноте и пишешь курсач или кодишь в VS - из-за высокой контрастности, между светлым монитором и темным задним фоном, глаза сильно

Пробный минивыжигатель на двигателях 28byj-48: часть 2

После событий первой части появилось желание сделать нормальный каркас, приобрести более мощный лазер и перейти на GRBL v.1.1. Размер рабочего поля останется прежним: 80х80мм. Будет повторно использована та же механика.
Напиши статью и получи скидку!

Arduino Leonardo и авиа-симулятор. Переводим джойстик на датчики Холла и делаем педали.

2020-05-14

Все статьи →

Богдан Норкин

Длинными карантинными вечерами захотелось скоротать время в леталке. Достал старый, добрый Logitech Attack 3 и… вот беда, его резисторы совсем умерли. И такие мелкие просто так купить, разве что заказывать на Али и ждать месяц.

Ждать не хотелось, да и летать без педалей тоже не хотелось. Зато на полочке лежала купленная когда-то давно Arduino Leonardo https://arduino.ua/prod260-arduino-leonardo-a000057. Основная фишка этой платы в том, что она построена на базе микроконтроллера ATmega32U4, в котором есть конвертор USB и он может подключаться не только, как виртуальный СOM порт, но и как HID – мышка, клавиатура, джойстик или даже руль. Leonardo имеет 12 аналоговых входов, т.е. мы можем сделать контроллер с 12 осями – все ограничено только нашей фантазией. Ну что же, нам как раз это и нужно, будем оживлять джойстик и делать педали, решил я.

Для начала джойстик. Я давно хотел избавиться от постоянно выходящих из строя резисторов. Штатный микроконтроллер (им оказался Cypress CY7C63221A/31A) был безжалостно отправлен на полочку, (хотя datasheet на него легко гуглится) и его место гордо занял Leonardo (к сожалению в корпус плата не поместилась). На место резисторов клеевым пистолетом были неподвижно приклеены датчики Холла (датчик, реагирующий на изменение магнитного поля, подробнее о них можно почитать, например на: http://robocraft.ru/blog/electronics/594.html Honeywell SS495A https://sensing.honeywell.com/SS495A-S-linear-and-angle-sensor-ics, а на оси - маленькие подвижные неодимовые магнитики. Вышло немного не эстетично, но надежно, работает и регулируется, достаточно немного подогреть паяльником или, в идеале, феном. Подключаются датчики просто элементарно – подаем питание (они прекрасно работают от 5в), а сигнальный провод заводим на аналоговый вход Ардуино. Теперь скачиваем с github библиотеку https://github.com/MHeironimus/ArduinoJoystickLibrary/tree/version-2.0 Эта замечательная библиотека превращает ардуинку в джойстик, руль или GamePad. Библиотека поддерживает 11 осей, 32 кнопки и 2 hatSwitch.

Распаковываем и кладем в папку с билбилотеками Ардуино, на Windows по умолчанию это %userprofile%\Documents\Arduino\libraries С библиотекой идет много примеров, на всякий случай приведу свой первоначальный скэтч - джойстик с одной кнопкой, педалями и газом. О том, как подключить кнопки, читаем здесь http://arduino.ru/tutorials/button, для этого понадобится резистор, у меня под рукой были на 100К.

#include <Joystick.h>

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD,

1, 0, // Button Count, Hat Switch Count

true, true, false, // X ,Y, no Z Axis

false, false, false, // No Rx, Ry, or Rz

true, true, // Rudder and Throttle

false, false, false); // No accelerator, brake, or steering

int button_0 = 10; // Для примера - единственная кнопка на pin10

int button_0_state = 0;

unsigned int xAxis_ = 0;

unsigned int yAxis_ = 0;

int Rudder_ = 0;

int Throttle_ = 0;

const bool initAutoSendState = true; //иначе придется обновлять состояние контроллера вручную

void setup()

{

Joystick.begin(); // инициализируем библиотеку

pinMode(button_0, INPUT); // назначаем пин 10, на котором у нас кнопка, как вход.

}

void loop()

{

button_value = digitalRead(button_0);

Joystick.setButton(0,button_value);

xAxis_ = analogRead(A0);

Joystick.setXAxis(xAxis_);

yAxis_ = analogRead(A1);

Joystick.setYAxis(yAxis_);

Throttle_ = analogRead(A2);

Joystick.setThrottle(Throttle_);

Rudder_ = analogRead(A3);

Joystick.setRudder(Rudder_);

}

Теперь подключаем это все к компьютеру, идем в настройки USB game controllers, видим там Arduino Leonardo, идем в настройки и если видим джойстик с одной кнопкой, газом и рулем направления, то переходим к настройке магнитов. Заходим в калибровку, ставим галочку в поле Display Raw Data.

Удаляя или приближая магнитик к датчику добиваемся того, чтобы в центральном положении показания были как можно ближе к нулю, а при движении до упора диапазон значений имел как можно больший разброс, но не выходил за пределы signed integer -32768 до 32767. Я установил более-менее грубо с 3 попытки, работа меня более чем устроила, захотелось улучшить механику.

Теперь педали! В ход пошло то, что было под рукой – лобзик, деревянные мебельные щиты и линейные направляющие от мебельных ящиков. Все собрано на подшипниках, но так как под рукой датчиков больше не оказалось, был вставлен переменный резистор на 10К. С горяча приклеил термоклеем еще пару таких же резисторов к джойстику – газ и триммер. Откалибровал, подключил 5 кнопок на ручке (думал еще hatswitch приделать, но 4 кнопки сверху оказалось вполне достаточно, чтобы переключать вид), и можно лететь! Осталось придумать какие ни будь пружины, чтобы педали возвращались в центральное положение и заменить Леонардо на https://arduino.ua/prod2671-klon-arduino-micro, чтобы закрыть корпус.

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Arduino Leonardo и авиа-симулятор. Переводим джойстик на датчики Холла и делаем педали. "
5 из 5
сделана на основе 1 оценки 1 клиентских отзыва.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Олег
11.06.2020 09:21:03
Тема интересная, я делал контроллер на базе мега8 MJoy от Mindaugas Milasauskas. В мега8 влазит симулятор USB контроллера (програмный) и разрадности АЦП хватает на 1024 отсчета на ось. Датчики Холла очень хорошо себя показали, но следующая стадия развития это датчики направленности магнитного поля.
оплата картами Visa и MasterCard