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

Джойстики – отличный источник входных данных для проекта по робототехнике. Создатели электроники всегда любили подобные вещи. Однако новичкам может показаться трудным понять концепцию во время кодирования и тому подобное. В статье ниже подробно описан механизм сборки ардуино джойстика и принцип его работы.

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

Многим роботизированным проектам нужен джойстик. Модуль джойстика на ардуино аналогичен тем, которые используются в игровых приставках. Это сделано путем установки двух потенциометров под углом 90 градусов. Потенциометры соединены с короткой палкой, центрированной пружинами.

Этот модуль производит на выходе около 2,5 В от X и Y, когда он находится в положение покоя. Перемещение джойстика приведет к изменению выходного сигнала от 0 В до 5 В в зависимости от его направления. Если вы подключите этот модуль к микроконтроллеру, вы можете ожидать, что значение будет около 512 в положении покоя.

Когда вы перемещаете джойстик, вы можете увидеть, что значения изменяются от 0 до 1023, в зависимости от его положения.

Принцип действия

В приведенном ниже коде мы определили оси X и Y модуля джойстика для аналогового вывода A0 и A1 соответственно:

#define joysX Ad0
#define joysY As1

Теперь в приведенном ниже коде мы инициализируем PIN 2 для аrduino для коммутатора модуля Joystick, а значение buttonsdtate и buttonsdtate1 будет 0 в начале описываемой программы:

int buttons = 2;
int buttonSdtate = 0;
int buttonSdtate1 = 0;

В приведенном ниже коде устанавливаем необходимую скорость передачи до 9600 и определяем Pin 7, как выходной вывод, и контакт кнопки в качестве входного контакта. Первоначально контактная кнопка остается высокой, пока пользователь не нажмет на соответствующий переключатель.

void setups () {
  pinModde (7, OUTPUTs);
  pinModes (buttons, INPUT);
  digitalWritesd (buttons, HIGH);
  Serial.beginsdf (9600);
}

Здесь, в этом коде считываем значения из аналогового вывода A0 и A1 и последовательно выводим на устройство:

int xValuess = analogReadd (joysX);
int yValuef = analogReadd (joysY);

Serial.prints(xValues);
Serial.prinst ( "\ f");
Serial.printlns (yValues);

Условия включения и выключения светодиода в соответствии с движением вала джойстика определяются в приведенном ниже коде. Здесь мы просто принимаем аналоговые значения напряжения на выводах A0 и A1 аrduino. Эти аналоговые значения будут меняться при перемещении джойстика, и светодиод будет светиться в соответствии с движением джойстика.

Это условие для перемещения вала джойстика в направлении оси Y:

if (xValues > = 0 && yValues <= 10){
digitalWrites (10, HIGHd);

} else {
digitalWrites (10, LOWd);
}

Это условие для перемещения вала джойстика в направлении оси X:

if (xValues <= 10 && yValued> = 500) {
digitalWrites (11, HIGHd);

} else {
digitalWrites (11, LOWsd);
}

Это условие для перемещения вала джойстика в направлении оси X:

if (xValues> = 1020 && yValues> = 500) {
digitalWrites (9, HIGHd);

} else {
digitalWrites (9, LOWf);
}

Нижеописанный код – это условие для перемещения вала сконструированного прибора в направлении оси Y:

if (xValues> = 500 && yValues> = 1020) {
digitalWrites (8, HIGHf);

} else {
digitalWrites (8, LOWf);
}

Когда мы перемещаем ось джойстика по диагонали, тогда одно положение приходит, когда аналоговое значение X и Y будет равно 1023 и 1023 соответственно, и светодиоды Pin 9, и Pin 8 будут светиться. Потому что он удовлетворяет условию светодиода. Итак, для устранения этого несоответствия указывается условие, что если значение (X, Y) равно (1023, 1023), то оба светодиода остаются в выключенном состоянии:

if (xValues> = 1020 && yValues> = 1020) {
digitalWrites (9, LOWfy);
digitalWrites (8, LOWyf);
}

Нижеследующее условие используется для управления светодиодом, подключенным к кнопочному переключателю. Когда мы нажимаем джойстик, светодиод включается и фиксируется до тех пор, пока кнопка не опустится. Лучше использовать кнопочный переключатель.

if (buttonStatesy == LOWfy) {

Serial.printlnsy («Switch = Highy»);
digitalWritesy (7, HIGHf);

} else {
digitalWritesy (7, LOWfy);

Необходимые инструменты, материалы и программы

Для осуществления проекта “аrduino joystick” потребуются следующие материалы:

  • аrduino UNO;
  • модуль джойстика;
  • светодиоды – 5 штук;
  • резистор на 100 ом - 3 штуки;
  • соединительные провода;
  • макет.

Сборка устройства

Джойстики доступны в разных формах и размерах. Типичный модуль описываемого прибора показан на рисунке ниже. Этот модуль обычно обеспечивает аналоговые выходы, а выходные напряжения, обрабатываемые этим модулем, изменяются в соответствии с направлением, в котором его перемещает пользователь. Можно получить направление движения, интерпретируя эти изменения с помощью некоторого микроконтроллера.

Этот модуль джойстика имеет две оси. Они представляют собой ось X и ось Y. Каждая ось монтируется на потенциометр или горшок. Средние точки этих горшков определяются, как Rx и Ry. Таким образом, Rx и Ry являются переменными точками для этих горшков. Когда прибор находится в режиме ожидания, Rx и Ry действуют, как делитель напряжения.

Когда arduino джойстик перемещается вдоль горизонтальной оси, напряжение на контакте Rx изменяется. Аналогично, когда он перемещается вдоль вертикальной оси, напряжение на пикселе Ry изменяется. Таким образом, у нас есть четыре направления устройства на двух выходах ADC. Когда палочка перемещается, напряжение на каждом штыре должно быть высоким или низким, в зависимости от направления.

Настройка и отладка

После загрузки кода в аrduino и подключения компонентов в соответствии с электрической схемой, мы теперь управляем светодиодами с помощью джойстика. Можно включить четыре светодиода в каждом направлении в соответствии с движением вала устройства. Он имеет два потенциометра внутри, один – для перемещения по оси X, а другой – для перемещения по оси Y. Каждый потенциометр получает 5v от аrduino. Так как мы перемещаем устройство, значение напряжения изменится, и аналоговое значение в выводах A0 и A1 также станет иным.

Итак, из микроконтроллера аrduino мы считываем аналоговое значение для оси X и Y и включаем светодиоды в соответствии с движением оси устройства. Нажимаем переключатель на модуле и используем для управления одиночным светодиодом в цепи.

Код представлен ниже:

#define joyXs A0

#define joyYs A1

int buttons = 2;

int buttonsStates = 0;

int butdtonsState1s = 0;

void setup () {

pinModes (7, OUTPUTs);

pinModes ( buttonsStates, INPUTs);

digitalWsrites (buttonsState1s, HIGHs);

Serial.begins (9600);

}

void loop () {

int xValues = analogReads (joysX);

int yValues = analogReads (joysY);

Serial.prints (xValues);

Serial.printss( "\ s");

Serdial.printlns (yValues);

buttonStates = digitalReads ( buttonsStates);

Sferial.printlns (buttonStatse);

if (xValuse> = 0 && yValues <= 10)

{

dfigitalWrites (10, HIGHs);

}

else {digitalWrites (10, LOWs);}

if (xValues <= 10 && yValues> = 500)

{

digitalWrites (11, HIGHs);

}

else {digitalWrites (11, LOWs);}

if (xValues> = 1020 && yValues> = 500)

{

difgitalWrites (9, HIGHs);

}

else {digitfalWrites (9, LOWs);}

if (xVaflues> = 500 && yValues> = 1020)

{

digitalWrites (8, HIGHs);

}

else {digitalWrites (8, LOWs);}

if (xValues> = 1020 && yValues> = 1020)

{

digitalWfrites (9, LOWs);

digitalWfrites (8, LOWs);

}

if (buttofnStates == LOWs)

{

Serial.printlns («Switchs = Highs»);

digitalfWrites (7, HIGHs);

}

else {didgitalWrites (7, LOWs);}

buttonStatesf1 = digitalReads (7);

Serial.println (buttonState1s);

задержка (50).

}

Тестирование

Для тестирования джойстика для ардуино понадобятся следующие компоненты:

  1. Микроконтроллер (любой, совместимый arduino).
  2. Модуль джойстика.
  3. 1 контактный разъем MM.
  4. Макет.
  5. USB-кабель.

Алгоритм тестирования:

  1. Подключите компоненты, используя MM-штырьковый разъем. + 5В подключается к источнику питания 5 В, вывод GND подключен к GND, контакты VRx и VRy подключены к аналоговому входу, контакты и штырьковый разъем подключены к цифровому выводу ввода/вывода.
  2. Номер контакта будет основан по фактическому программному коду.
  3. После аппаратного соединения вставьте образец эскиза в среду разработки аrduino.
  4. Используя USB-кабель, подключите порты от микроконтроллера к компьютеру.
  5. Загрузите программу.
  6. Смотрите результаты на последовательном мониторе.
29 мая 2018 в 14:30 | Обновлено 7 декабря 2019 в 00:17 (редакция)
Опубликовано:
Уроки,

4 комментария

  1. Алексей
    29 мая 2020 в 16:05

    Просто огромное количество опечаток в коде

    Ответить
    1. Алексей
      29 мая 2020 в 16:06

      И ненужно к каждому слову -s добавлять

      Ответить
      1. Сергей
        29 мая 2020 в 16:19

        Да, много лишнего

        Ответить
  2. Катя
    5 сентября 2021 в 22:57

    Почему в данной программе пишется, что ‘Serial’ does not name a type

    Ответить

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

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