Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

Arduino UNO урок 12 - Подключение джойстика

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

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

Сами модули выглядят примерно так:


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

Схема подключения к Arduino:


В программе, работать с джойстиком также очень просто:
 

 
Код:
#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. И видим следующую картину:


Как видите все довольно просто. И на последок напишем небольшую программу, целью которой будет изменять значение переменной, в зависимости от отклонения джойстика по оси 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:


 Скачать файлы примера можно по этой ссылке.

Автор: Колтыков А.В.


C этой схемой также часто просматривают:

Подключение телефонной линии к звуковой карте
Сплитер (подключение 4-х мониторов)
ПОДКЛЮЧЕНИЕ ТРЕХФАЗНЫХ ПОТРЕБИТЕЛЕЙ К ОДНОФАЗНОЙ СЕТИ
Подключение монитора "Электроника 32 ВТЦ-202" к компьютеру семейства IBM.
Светодиодный куб 5х5х5 на Arduino
Arduino UNO урок 11 - Serial LCD
Arduino UNO урок 10 - Подключаем LCD
Arduino UNO урок 9 - Нагрузка
Arduino UNO урок 8 - Ночник

Главные категории

Arduino


Аудио


В Вашу мастерскую


Видео


Для автомобиля


Для дома и быта


Для начинающих


Зарядные устройства


Измерительные приборы


Источники питания


Компьютер


Медицина и здоровье


Микроконтроллеры


Музыкантам


Опасные, но интересные конструкции


Охранные устройства


Программаторы


Радио и связь


Радиоуправление моделями


Световые эффекты


Связь по проводам и не только...


Телевидение


Телефония


Узлы цифровой электроники


Фототехника


Шпионская техника



Реклама на KAZUS.RU




Последние поступления

Графический семиполосный эквалайзер-радуга на Arduino Nano и MSGEQ7

Часы реального времени для Arduino

Старинные часы-метеостанция

Блок питания для Arduino из ATX

ATX блок питания управляемый Arduino

Arduino своими руками с USB портом

Подключение монетоприемника к Arduino

Подключение PS/2 клавиатуры к Arduino

Пробуждение ПК по сети на Arduino

Запись/чтение на SD-карту с Arduino



© 2003—2017 «KAZUS.RU - Электронный портал»