Підключення двоосьового джойстика KY-023 до Arduino
Номер слайду 2
Мета та ціль. У tinkercad скласти схему, що реалізує роботу джостика
Номер слайду 3
ХІД РОБОТИРозглянемо підключення джойстика до плати Arduino, за допомогою якого ми керуватимемо включенням/вимкненням 4-х світлодіодів, які показуватимуть напрямок переміщення ручки джойстика.
Номер слайду 4
Це модуль маніпулятор, що складається з двох потенціометрів і однією тактовою кнопкою, щодозволяє користувачеві керуватирізними пристроями. Двоосьовий джойстик (KY-023) PS2 Joystick
Номер слайду 5
Напруга живлення: 5 ВПоворот ручки: 360 °Розміри: 40 мм х 26 мм х 32 мм. Технічні характеристики (KY-023) PS2 Joystick
Номер слайду 6
Модуль джойстика містить 5 контактів: два для подачі живлення, два для потенціометрів по осях X та Y і один для центрального перемикача. Розпинка модуля джойстика показана на наступному малюнку. Розпинування модуля джойстика
Номер слайду 7
VCC – контакт для живлення. У проекті його необхідно підключити до контакту 5 V плати Arduino. GND - загальний провід (земля). Необхідно підключити до землі плати Arduino. VRx/VRy – виходи потенціометрів. SW – вихід перемикача. При натисканні у ньому формується рівень low. Призначення контактів
Номер слайду 8
Схема проекту
Номер слайду 9
код програми У наступному фрагменті коду ми ініціалізуємо аналогові контакти Arduino A0 та A1 щоб відстежувати переміщення джойстика по осях X та Y відповідно.#define joy. X A0#define joy. Y A1
Номер слайду 10
Далі ми ініціалізуємо контакт PIN 2 (до нього підключена кнопка джойстика) та визначимо початкові значення змінних buttonstate та buttonstate1.int button=2;int button. State = 0;int button. State1 = 0;
Номер слайду 11
У наступному фрагменті коду ми ініціалізуємо послідовний порт зв'язку для роботи на швидкості 9600 бод/с і встановимо режим роботи контактів: Pin 7 – на виведення даних, контакт, до якого підключена кнопка – на введення даних.void setup() { pin. Mode(7,OUTPUT); pin. Mode(button,INPUT); digital. Write(button, HIGH); Serial.begin(9600);}
Номер слайду 12
Далі у програмі ми зчитуємо значення з аналогових входів A0 та A1 та передаємо їх у вікно монітора послідовного зв'язку.int x. Value = analog. Read(joy. X);int y. Value = analog. Read(joy. Y); Serial.print(x. Value); Serial.print("\t"); Serial.println(y. Value);
Номер слайду 13
Потім ми повинні прописати в програмі умови включення та вимкнення світлодіодів залежно від переміщень осі джойстика. На наступному малюнку представлені діапазони можливих змін значень на виходах контактів АЦП A0 і A1 в залежності від переміщення осі джойстика.
Номер слайду 14
Умова для переміщення осі джойстика в напрямку Y:if (x. Value>=0 && y. Value<=10){ digital. Write(10, HIGH); } else{digital. Write(10, LOW);}
Номер слайду 15
Умова для переміщення осі джойстика у напрямку -X: if (x. Value<=10 && y. Value>=500){ digital. Write(11, HIGH); } else{digital. Write(11, LOW);}
Номер слайду 16
Умова для переміщення осі джойстика у напрямку +X: if (x. Value>=1020 && y. Value>=500){ digital. Write(9, HIGH); } else{digital. Write(9, LOW);}
Номер слайду 17
Умова для переміщення осі джойстика у напрямку +Y: if (x. Value>=500 && y. Value>=1020){ digital. Write(8, HIGH); } else{digital. Write(8, LOW);}
Номер слайду 18
Але якщо ми перемістимо джойстик по діагоналі, значення з виходів АЦП по осях X і Y будуть 1023 і 1023 відповідно. І, оскільки, в цьому випадку будуть виконані відразу дві з перерахованих вище умов, то повинні запалитися світлодіоди, підключені до контактів Pin 9 і Pin 8. Щоб усунути цю невідповідність, ми додамо ще умову - якщо обидва значення (X, Y) будуть рівні ( 1023, 1023), тоді обидва світлодіоди будуть у вимкненому стані. if (x. Value>=1020 && y. Value>=1020) { digital. Write(9, LOW); digital. Write(8, LOW); }
Номер слайду 19
І насамкінець нам залишилася одна умова для кнопки джойстика – при її натисканні буде загорятися світлодіод і горіти до тих пір, поки ми не відпустимо кнопку. if (button. State == LOW) { Serial.println("Switch = High"); digital. Write(7, HIGH); } else{digital. Write(7, LOW);}
Номер слайду 20
Вихідний код програми
Номер слайду 21
Вихідний код програми
Номер слайду 22
Тестування роботи проекту
Номер слайду 23
Закріплення матеріалу. Отже, що ви дізналися на цьому занятті? Що засвоїли та чому навчилися?