====== Джойстик PS2 ======
===== Описание =====
Модуль-джойстик сочетает в себе двухосный джойстик и тактовую кнопку. Показатели перемещения джойстика по осям передаются в виде аналогового сигнала, показатели кнопки - в виде цифрового. Оси представляют собой резисторы 10 кОм, при перемещении рукоятки по ним меняется сопротивление. Считывая уровень сигнала можно понять положение джойстика (среднее положение ~2,5 В), которое при вращении меняется от 0 до 5 В.
Джойстик подойдет для проектов постепенного/ускоренного изменения значений, управления объектами (роботами и др), как игровая консоль для управления в играх и прочих разработок.
 
==== Физические размеры ====
  * Модуль (Д х Ш х В): 39 х 26 х 35 мм

==== Плюсы использования ====
  * Прост в подключении
  * Имеет встроенную кнопку (для дополнительного элемента при управлении)

==== Минусы использования ====
  * За счет отсутствия резистора, при использовании кнопки, потребуется добавлять в цепь резистор

===== Примеры подключения и использования =====
**Пример 1:** В примере иллюстрируется подключение модуля джойстика к контроллеру, и определение текущего значения положения рукоятки по осям. Значения выводятся в монитор Serial - порта. (Примеры тестировались на контроллере Smart UNO)

^ Что нужно                                                                                                               ^  Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                            |  1           |
| [[http://smartelements.ru/collection/moduli/product/dzhoystik-ps2|Джойстик PS2]]                      |  1           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]]  |  4           |


**Схема подключения:**
{{ главная:модули:joystick_ex1.jpg |}}

**Скетч для загрузки:**
<file Arduino>
const int the_X_axis = 0; // подключение оси X к аналоговому порту 0
const int the_Y_axis = 1; // подключение оси Y к аналоговому порту 1
 
int value_X = 0; // хранение значения оси Х
int value_Y = 0; // хранения значения оси Y
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  value_X = analogRead(the_X_axis); // Считать аналоговое значение Х
  Serial.print("X:");
  Serial.print(value_X); // Вывести значение в монитор Serial порта
 
  value_Y = analogRead(the_Y_axis); // Считать аналоговое значение Y
  Serial.print(" Y:");
  Serial.println(value_Y); // Вывести значение в монитор Serial порта
 
  delay(250); // Задержка 250 мс
}
</file>

**Пример 2:** В примере иллюстрируется подключение модуля джойстика к контроллеру, и определение текущих значений положения рукоятки по осям . Также проверяется нажатие кнопки джойстика. Значения по осям и нажатия кнопки выводятся в монитор Serial - порта. (Примеры тестировались на контроллере Genuino UNO)

^ Что нужно                                                                                                               ^ Кол-во, шт  ^
| [[http://smartelements.ru/product/kontroller-smart-uno|Контроллер Smart UNO]]                            |  1           |
| [[http://smartelements.ru/collection/moduli/product/dzhoystik-ps2|Джойстик PS2]]                      |  1           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]]  |  5           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]]  |  3           |
| [[http://smartelements.ru/collection/radiodetali/product/nabor-rezistorov|Резистор 10 кОм]]                             |  1           |
| [[http://smartelements.ru/collection/raznoe/product/maketnaya-plata-mini|Макетная плата мини]]                          |  1           |

**Схема подключения:**
{{ главная:модули:joystick_ex2.jpg |}}

**Скетч для загрузки:**
<file Arduino>
const int the_X_axis = 0; // подключение оси X к аналоговому порту 0
const int the_Y_axis = 1; // подключение оси Y к аналоговому порту 1
const int button = 8; // подключение кнопки джойстика
 
int value_X = 0; // хранение значения оси Х
int value_Y = 0; // хранения значения оси Y
int buttonValue = 0; // значение нажатия кнопки
 
void setup() {
  pinMode(buttonValue, INPUT); // Задаем как вход пин кнопки
  Serial.begin(9600);
}
 
void loop() {
  value_X = analogRead(the_X_axis); // Считать аналоговое значение Х
  Serial.print("X:");
  Serial.print(value_X); // Вывести значение в монитор Serial порта
 
  value_Y = analogRead(the_Y_axis); // Считать аналоговое значение Y
  Serial.print(" Y:");
  Serial.print(value_Y); // Вывести значение в монитор Serial порта
 
  buttonValue = digitalRead(button); // Считываем цифровое значение оси Z (кнопка)
  buttonValue = !buttonValue; // Инвертируем значение
  Serial.print(" button: ");
  Serial.println(buttonValue); // Вывести значение в монитор Serial порта
 
  delay(250); // Задержка 250 мс
}
</file>

