Перейти к содержанию

Подключение джойстика к Ардуино (KY-023)

Модуль джойстика Ардуино подключение

Подключение джойстика к Arduino позволяет реализовать проект дистанционного управления автомобилем или роботом (манипулятором) на Ардуино. Рассмотрим, как подключить аналоговый джойстик (модуль KY-023) к микроконтроллеру и управлять светодиодами с помощью 2-осевого джойстика. Мы представим несколько программ и схем для подключения 2-осевого джойстика к плате Arduino Nano или Uno.


 

 

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • модуль джойстика KY-023
  • светодиоды и резисторы
  • микро сервомотор
  • макетная плата
  • коннекторы

Дополнительные материалы на эту тему:

  1. Подключение и управление серво от Ардуино
  2. Подключение потенциометра к Ардуино
  3. Плавное включение светодиода от Ардуино

Аналоговый джойстик представляет собой шарнирную ручку с двумя потенциометрами, определяющими положение джойстика по осям X и Y и тактовой кнопкой. Наклон ручки вращает потенциометр и изменяет выходное напряжение модуля ky-023, контролируя степень отклонения ручки от центральной точки. Когда ручка аналогового джойстика отпускается, он плавно возвращается в центральное (нулевое) положение.

Джойстик Arduino принцип работы, распиновка

Модуль джойстика принцип работы, распиновка

Характеристики модуля джойстика KY-023 (datasheet)

  • Напряжение питания: 5 В
  • Поворот ручки: 360°
  • Габариты: 34 х 26 х 34 мм
  • Распиновка у разных производителей может отличаться

Модуль джойстика KY-023 имеет свои недостатки. Ручка джойстика не всегда точно возвращается в центральное положение, поэтому центральное положение кнопки в программе нужно рассматривать не как точное значение, а как некоторый диапазон значений. Другими словами, когда у модуля ручка 2-осевого джойстика находится по центру, значения координат X и Y могут быть между 490 и 530 вместо 512.

Как подключить джойстик KY-023 к Ардуино

Как подключить джойстик KY-023 Ардуино

После подключения джойстика к Ардуино загрузите следующий код. В этом примере данные джойстика будут отображаться на мониторе порта, а светодиод на плате, подключенный параллельно выводу 13, будет гаснуть при нажатии кнопки. Соберите схему джойстика с микроконтроллером Arduino Uno, как показано на картинке выше, загрузите программу и откройте последовательный порт приложения Arduino IDE на компьютере.

Скетч для модуля джойстика KY-023 и Ардуино


#define pinX A2
#define pinY A1
#define swPin 2
#define ledPin 13

void setup() {
  Serial.begin(9600);
  
  pinMode(ledPin, OUTPUT);
  pinMode(pinX, INPUT);
  pinMode(pinY, INPUT);
  
  pinMode(swPin, INPUT);
  digitalWrite(swPin, HIGH);
}
 
void loop() {
  boolean ledState = digitalRead(swPin);
  digitalWrite(ledPin, ledState);

  int X = analogRead(pinX);
  int Y = analogRead(pinY);

  Serial.print(X);
  Serial.print("\t");
  Serial.println(Y);
}

Как подключить джойстик и светодиоды к Ардуино

Управление светодиодами от джойстика Ардуино

Теперь можно усложнить схему, выполнив плавное включение светодиодов и выключение, управляемых джойстиком. Для этого подключите два светодиода через резистор к аналоговым портам 5 и 6. В следующем скетче используйте функцию map() для преобразования переменных X и Y из диапазона чисел от 0 до 1023 в диапазон чисел от 0 до 255. Подключите светодиоды к плате и загрузите следующий скетч в плату.

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

#define pinX A2
#define pinY A1
#define swPin 2
#define ledPin 13
#define ledX 11
#define ledY 10

void setup() {
  pinMode(ledX, OUTPUT);
  pinMode(ledY, OUTPUT);
 
  pinMode(ledPin, OUTPUT);
  pinMode(pinX, INPUT);
  pinMode(pinY, INPUT);
  
  pinMode(swPin, INPUT);
  digitalWrite(swPin, HIGH);
}
 
void loop() {
  boolean ledState = digitalRead(swPin);
  digitalWrite(ledPin, ledState);

  int X = analogRead(pinX);
  int Y = analogRead(pinY);

  X = map(X, 0, 1023, 0, 255);
  Y = map(Y, 0, 1023, 0, 255);
  
  analogWrite(ledX, X);
  analogWrite(ledY, Y);
}

Как подключить сервомотор и джойстик к Ардуино

Как подключить сервомотор и джойстик к Ардуино

Подключите микро сервопривод и джойстик к плате Arduino, как показано на рисунке выше. Загрузите в микроконтроллер следующий скетч для осуществления плавного управления сервоприводом от модуля джойстика KY-023. В программе используется функция map(), которая преобразует числовой диапазон значений от 0 до 1023 на аналоговом входе A1 плата Ардуино в новый числовой диапазон от 0 до 180 (угол поворота сервопривода).

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

#define pinX A1

#include "Servo.h"
Servo servo;

void setup() {
  Serial.begin(9600);

  pinMode(pinX, INPUT);
  servo.attach(9);
}
 
void loop() {
  int X = analogRead(pinX);
  Serial.println(X);

  X = map(X, 0, 1023, 0, 180);
  
  servo.write(X);
}

Заключение. Мы рассмотрели схему подключения джойстика к Arduino и несколько вариантов управления светодиодами от микроконтроллера. Как вы сами убедились, работа с джойстиком и микроконтроллером Ардуино доступна любому начинающему мейкеру, поскольку принцип работы модуля ky-023 схож с простым потенциометром. Этот модуль можно использовать во многих интересных проектах DIY с платой Arduino.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

newzaym
➜