Радиомастер гид в мире электроники » Статьи » Программирование » Arduino » Arduino UNO — Подключение джойстика. Урок 12
Информация к новости
  • Просмотров: 2622
  • Добавил: Dina
  • Дата: 4 декабря 2013
4 декабря 2013

Arduino UNO — Подключение джойстика. Урок 12

Категория: Статьи » Программирование » Arduino

Для плат Arduino существуют модули аналогового джойстика. Как правило, имеющие ось X, Y и кнопку - ось Z. Джойстик позволяет более плавно и точно отслеживать степень отклонения от нулевой точки. А помимо удобства по сравнению с кнопками, это позволяет реализовывать более совершенные интерфейсы. К примеру, при изменении какого-либо значения в меню, можно написать программу таким образом, что чем сильнее отклонена ось джойстика, тем быстрее изменяется значение переменной. Например, нам необходимо изменить значение от 0 до 2000 с шагом в 1. Представьте, сколько раз вам потребовалось бы нажимать кнопку или писать специальный алгоритм, скажем при длительности нажатия больше 3 сек прибавлять изменять шаг на 10 или 100. А при использовании джойстика это можно реализовать намного проще.

Средняя цена на ebay колеблется в районе 7-10$ за модуль (с бесплатной доставкой в Россию). Найти модуль на ebay очень просто: в поисковое поле введите запрос joystick module.

Сами модули выглядят примерно так:
Arduino UNO — Подключение джойстика. Урок 12


Не пугайтесь количеством выводов, это сделано для универсальности и удобства подключения. Контакты Vcc и GND между всеми тремя группами контактов соединены. Т.о. для подключения нужно 5 проводов: ось X, ось Y, кнопка Z, питание Vcc и общий GND. Джойстики пассивные модули и не потребляют какую-либо энергию от платы Arduino.
Схема подключения к Arduino:

Arduino UNO — Подключение джойстика. Урок 12


В программе, работать с джойстиком также очень просто:
#define axis_X 0    // Ось Х подключена к Analog 0
#define axis_Y 1    // Ось Y подключена к Analog 1
#define axis_Z 2    // Ось Z (кнопка джойстика) подключена к Digital 2
int value_X, value_Y, value_Z = 0;    // Переменные для хранения значений осей
void setup() {
  pinMode(axis_Z, INPUT);    // Задаем как вход
  Serial.begin(9600);
}
void loop() {
  value_X = analogRead(axis_X);    // Считываем аналоговое значение оси Х
  Serial.print("X:");
  Serial.print(value_X, DEC);      // Выводим значение в Serial Monitor
  value_Y = analogRead(axis_Y);    // Считываем аналоговое значение оси Y
  Serial.print(" | Y:");
  Serial.print(value_Y, DEC);      // Выводим значение в Serial Monitor
  value_Z = digitalRead(axis_Z);   // Считываем цифровое значение оси Z (кнопка)
  value_Z = value_Z ^ 1;           // Инвертируем значение
  Serial.print(" | Z: ");
  Serial.println(value_Z, DEC);    // Выводим значение в Serial Monitor
  delay(250);                      // Задержка 250 мс
}


Как видно выше, в начале мы определяем входные пины для осей (define), а потом в главном цикле считываем значения с пинов и выводим их в Serial Monitor. И видим следующую картину:

Arduino UNO — Подключение джойстика. Урок 12


Как видите все довольно просто. И на последок напишем небольшую программу, целью которой будет изменять значение переменной, в зависимости от отклонения джойстика по оси Y от нулевой точки. А при нажатии на кнопку джойстика, переменная будет обнуляться.

#define axis_Y 1    // Ось Y подключена к Analog 1
#define axis_Z 2    // Ось Z (кнопка джойстика) подключена к Digital 2
int value, value_Y, value_Z = 0;    // Переменные для хранения значений осей
void setup() {
  pinMode(axis_Z, INPUT);    // Задаем как вход
  Serial.begin(9600);
}
void loop() {
  value_Y = analogRead(axis_Y);    // Считываем аналоговое значение оси Y
  if(value_Y >= 0 && value_Y < 100) value = value - 10;
  if(value_Y > 100 && value_Y < 300) value = value - 5;
  if(value_Y > 300 && value_Y < 520) value = value - 1;
  if(value_Y > 535 && value_Y < 700) value = value + 1;
  if(value_Y > 700 && value_Y < 900) value = value + 5;
  if(value_Y > 900) value = value + 10;
  value_Z = digitalRead(axis_Z);   // Считываем цифровое значение оси Z (кнопка)
  if(value_Z == 0)  value = 0;     // Сброс значения
  
  Serial.println(value, DEC);    // Выводим значение в Serial Monitor
  delay(500);                      // Задержка 250 мс
}


Вывод в Serial Monitor:
Arduino UNO — Подключение джойстика. Урок 12


Скачать файлы примера
Вы не можете скачивать файлы с нашего сервера

Метки к статье: джойстик, подключение джойстика



Добавление комментария

Имя:*
E-Mail:*
Введите два слова, показанных на изображении: *

Друзья и партнеры:

Архив новостей

Декабрь 2016 (8)
Ноябрь 2016 (1)
Сентябрь 2016 (3)
Июнь 2016 (1)
Май 2016 (1)
Апрель 2016 (1)
^
 
-->