Джойстик для Arduino: аналоговый KY-023, кнопочный или трёхосевой
Джойстик — это способ управлять чем-то в двух измерениях одновременно: направлением робота, положением курсора, наклоном камеры. Классический модуль от игровой приставки устроен предельно просто: два потенциометра, повёрнутые друг относительно друга на девяносто градусов, и кнопка под ручкой.
Никакой электроники внутри нет, поэтому и подключение простое: две аналоговые линии и одна цифровая.
Разборы конкретных моделей
Виды джойстиков
Тот самый модуль с чёрной шляпкой и красной платой. Даёт плавное значение по каждой оси от нуля до тысячи двадцати трёх, есть кнопка на нажатие. Занимает два аналоговых входа и один цифровой. Самый ходовой вариант.
Та же схема, но размером с ноготь и без платы — выводы придётся паять самому. Подходит, когда джойстик встраивается в компактный корпус пульта.
Не потенциометры, а четыре или пять обычных кнопок под общей ручкой: вверх, вниз, влево, вправо, нажатие. Плавности нет, зато не нужны аналоговые входы и не нужна мёртвая зона. Для навигации по меню этого достаточно, и код получается проще.
Мёртвая зона — обязательная часть кода
Отпущенная ручка возвращается пружиной в центр, но не идеально: значение колеблется вокруг пятисот, дёргаясь на пару десятков в обе стороны. Если подавать эти числа прямо на мотор, он будет тихо ползти при отпущенном джойстике.
Поэтому вводят мёртвую зону: всё, что отличается от центра меньше чем на полсотни, считается нулём. И сам центр не задают константой, а измеряют при старте программы — у каждого экземпляра он свой и гуляет на несколько десятков единиц.