Існує велика розмаїтість способів передачі інформації від людини мікроконтролеру або комп’ютера, і один з них – це використання джойстика. Давайте подивимося як підключити до Arduino аналоговий джойстик з двома осями і кнопкою.

Джойстик с двумя осями и кнопкой

Вам знадобиться

  • – Arduino;
  • – двовісний джойстик;
  • – 3 резистора номіналом 220 Ом;
  • – 1 RGB або 3 звичайних світлодіода.

Інструкція

1. Джойстик – зручне і легке у використанні пристрій для передачі інформації. Видів джойстиків за кількістю ступенів свободи, принципом зчитування показань і використовуваним технологіям існує велика кількість. Джойстики найчастіше використовуються для управління рухом будь-яких механізмів, керованих моделей роботів. Аналоговий джойстик, який ми сьогодні розглянемо, що являє собою ручку, закріплену на кульовому шарнірі з двома взаємно перпендикулярними осями. При нахилі ручки, вісь обертає рухливий контакт потенціометра, завдяки чому змінюється напруга на його виході. Також аналоговий джойстик має тактову кнопку, яка спрацьовує при вертикальному натисканні на ручку.

Принципиальная схема джойстика

2. Підключимо джойстик за наведеною схемою. Аналогові виходи X і Y джойстика підключимо до аналогових входів A1 і A2 Arduino, вихід кнопки SW – до цифрового входу 8. Харчування джойстика здійснюється напругою +5 Ст.

Схема подключения джойстика к Arduino

3. Для того, щоб наочно побачити, як працює джойстик, напишемо такий скетч. Оголосимо піни, задамо їм режими роботи. Зверніть увагу, в процедурі setup() ми подали на вхід switchPin високий рівень. Цим ми включили вбудований підтягуючий резистор на цьому порту. Якщо його не включити, то, коли навігаційна клавіша клавіша не натиснута, 8-ий порт Arduino буде висіти в повітрі і ловити наводки. Це спричинить небажані хаотичні помилкові спрацьовування.
У процедурі loop() ми постійно опитуємо стан кнопки і відображаємо його з допомогою світлодіода на виході 13. З-за того, що вхід switchPin підтягнуть до харчування, світлодіод постійно горить, а при натисканні кнопки гасне, а не навпаки.
Далі ми зчитуємо свідчення двох потенціометрів джойстика – виходу осей X і Y. Arduino має 10-розрядні АЦП, тому значення, що знімаються з джойстика, лежать в діапазоні від 0 до 1023. В середньому положенні джойстика, як видно на ілюстрації, знімаються значення в районі 500 – приблизно середина діапазону.

Скетч для демонстрации работы джойстика

4. Зазвичай джойстик використовують для управління електродвигунами. Але чому б не використовувати його, наприклад, для керування яскравістю світлодіода? Давайте підключимо за наведеною схемою RGB світлодіод (або три звичайних світлодіода) до цифрових портів 9, 10 і 11 Arduino, не забуваючи, звичайно, про резисторах.

Схема подключения джойстика и RGB светодиода к Arduino

5. Будемо міняти яскравість відповідних кольорів при зміні положення джойстика по осях, як показано на рисунку. З-за того, що джойстик може бути не точно отцентрирован виробником і мати середину шкали не на позначці 512, а від 490 до 525, то світлодіод може злегка світитися навіть коли джойстик знаходиться в нейтральному положенні. Якщо ви хочете, щоб він був повністю виключений, то внесіть в програму відповідні поправки.

Диаграмма распределения яркости R, G, B каналов по осям X и Y

6. Орієнтуючись на наведену діаграму, напишемо скетч управління Arduino яскравістю RGB світлодіоди з допомогою джойстика.
Спочатку оголосимо відповідність пінів і дві змінні – ledOn і prevSw – для роботи з кнопкою. У процедурі setup() призначимо пинам функції і підключимо до піну кнопки підтягуючий резистор командою digitalWrite(swPin, HIGH).
У циклі loop() визначаємо натискання кнопки джойстика. При натисканні на кнопку перемикаємо режими роботи між режимом “ліхтарика” і режимом “світломузики”.
В режимі freeMode() управляємо яскравістю світлодіодів з допомогою нахилу джойстика в різні сторони: чим сильніше нахил осі, тим яскравіше світить відповідний колір. Причому перетворення значень бере на себе функція map(значення, отНижнего, отВерхнего, кНижнему, кВерхнему). Функція map() переносить виміряні значення (отНижнего, отВерхнего) по осях джойстика в бажаний діапазон яскравості (кНижнему, кВерхнему). Можна те ж саме зробити звичайними арифметичними діями, але така запис істотно коротше.
В режимі discoMode() три кольори поперемінно набирають яскравість і гаснуть. Щоб можна було вийти з циклу при натисканні кнопки, кожну ітерацію перевіряємо, чи не була натиснута кнопка.

Скетч для управления яркостью светодиода с помощью аналогового джойстика

7. В результаті вийшов ліхтарик з триколірного RGB світлодіоди, яскравість світіння кожного кольору якого задається за допомогою джойстика. А при натисненні на кнопку відбувається включення режиму “світломузика”. Хоча у мене він використовується, навпаки, в якості нічника.
Таким чином, ми навчилися підключати до Arduino аналоговий двовісний джойстик з кнопкою і зчитувати з нього свідчення. Ви можете придумати і реалізувати більш цікаве застосування джойстику, ніж наш приклад.

RGB светодиод, управляемый джойстиком и Arduino

НАПИСАТИ ВІДПОВІДЬ

Please enter your comment!
Please enter your name here