Керування з кнопки
Вступ
Попереднього уроку ми вже навчились певним операціям з Дроном: переводити його в режим програмування, завантажувати нові програми та написали першу програму, яка керує світлодіодами. Цього разу ми навчимось визначати коли користувач натискає на кнопку і, поєднавши це зі знаннями з попереднього уроку, будемо вмикати і вимикати світлодіоди з кнопки.
Кнопки
Кнопки уже досить довгий час являються основним способом взаємодії людини з електронікою, зокрема і комп’ютерами чи побутовими приладами. Натискаючи кнопки на мікрохвильовці, ми можемо задати час і температуру підігріву їжі. Натискаючи кнопки на клавіатурі ноутбука ми вводимо слова в текстовому документі. Коли приходимо вгості до друга – натискаємо кнопку дверного дзвінка. Лише відносно недавно з’явились сенсорні екрани, де ми натискаємо вже віртуальні кнопки, але принцип залишився той самий. Тому коли ви проєктуєте свій пристрій, яким буде користуватись людина, обов’язково треба придумати спосіб, через який вона буде керувати ним. І таким способом найчастіше є кнопки.
Наш Дрон має 4 кнопки, лише 2 з яких ми можемо використовувати в своїх програмах – кнопка А (підключена до піна PA4) та кнопка B (пін PC15). Ми можемо зчитувати стани (натиснуті чи ні) цих кнопок з нашої програми і реагувати як нам хочеться: наприклад керувати світлодіодами, запускати музику на зумері, вмикати пропелер і т.д.
Принцип дії кнопки наступний: кнопка підключена в розімкнуте електричне коло і коли на кнопку натискають, то цим самим кнопка замикає коло і по ньому починає протікати струм. А як відомо з уроків фізики, електричний струм може протікати лише в замкнутому колі. В цей же час електронний пристрій (в нашому випадку – Дрон) вміє виявляти протікання струму в електричному колі з кнопкою. Таким чином ми і дізнаємось, що кнопка була натиснута. Насправді, всі побутові прилади теж так роблять, щоб дізнатися коли користувач натискає кнопки.
Написання програми
Давайте напишемо програму, яка буде вмикати перший світлодіод (пін PA5) при натисканні на кнопку A (пін PA4).
Для цього пригадаємо вже відомі з попередніх уроків функції, які допоможуть нам в цьому:digitalWrite
– вмикаємо (1) чи вимикаємо (0) пінpinMode
– переводимо пін в режим роботи на вхід (INPUT) чи на вихід (OUTPUT). Цього разу, оскільки нам потрібно буде зчитувати стан кнопки, то нам треба перевести режим роботи піна, до якого підключена кнопка в режим роботи саме на вхід
Нова функція, яку ми вивчимо на цьому уроці це:digitalRead
– зчитує стан кнопки на певному піні, повертає 0 якщо кнопка натиснута, 1 – не натиснута. Тобто таким чином Дрон у вигляді числа каже нам чи кнопка була натиснута чи ні
1void setup() {
2 pinMode(PA5, OUTPUT);
3 pinMode(PA4, INPUT);
4}
5
6int pressed;
7
8void loop() {
9 pressed = digitalRead(PA4);
10 if (pressed == 0) {
11 digitalWrite(PA5, 1);
12 }
13 if (pressed == 1) {
14 digitalWrite(PA5, 0);
15 }
16}
1void setup() { //Функція 'setup' виконується першою при запуску Дрона і лише раз
2 pinMode(PA5, OUTPUT); //Переводимо пін 1-го світлоідоду в режим роботи на вихід
3 pinMode(PA4, INPUT); //Переводимо пін кнопки А в режим роботи на вхід
4}
5
6int pressed; //Створення змінної 'pressed', в якій будемо зберігати чи нажата кнопка
7
8void loop() { //Функція 'loop' виконується циклічно і безкінечно одразу після 'setup'
9 pressed = digitalRead(PA4);//Зчитуємо стан кнопки у вигляді цифри: 1 - не натиснута, 0 - так
10 if (pressed == 0) { //Перевіряємо чи функція 'digitalRead' записала в змінну 'pressed' нуль
11 digitalWrite(PA5, 1); //якщо так - значить вмикаємо світлодіода
12 }
13 if (pressed == 1) { //Перевіряємо чи функція 'digitalRead' записала в змінну 'pressed' одиницю:
14 digitalWrite(PA5, 0); //якщо так - вимикаємо сітлодіод
15 }
16}
Скопіюйте програму в Ардуїно, переведіть Дрон в режим програмування та завантажте нашу нову програму на Дрон. Якщо забули як це робиться, можна звернутися до 1-го уроку.
Тепер спробуйте нашу програму в ділі. Понатискайте на кнопку і поспостерігайте за поведінкою Дрона. Як бачите, тепер Дрон реагує на натискання кнопки і повністю виконує Ваші команди, які ми описали в програмі. Це відрізняється від 1-го уроку, де Дрон міг миготіти світлодіодом лише з заданим інтервалом.
Самостійна робота №1
Світлодіод, яким ми керували з кнопки, підключений до піна PA5 і знаходиться одразу на основній частині Дрона. Тепер давайте підключимо зовнішній модуль до Дрона і спробуємо керувати ним. Для цього виконайте наступне:
- Підключіть пропелер до піна PA6 (зверху зліва)
- Модифікуйте попередню програму в Ардуїно таким чином, щоб замість піна PA5 можна було керувати піном PA6
- Завантажте Вашу нову програму на Дрон
Тепер спробуєте самостійно керувати іншим світлодіодом.
- Модифікуйте основну програму таким чином, щоб замість світлодіоду PA5, можна було керувати будь-яким іншим світлодіодом, наприклад PA7 чи PA12
- Завантажте Вашу нову програму на Дрон
Самостійна робота №2
- Модифікуйте основну програму таким чином, щоб в додачу до світлодіоду PA5 вмикався ще й світлодіод PA7 або будь-який інший.
- Завантажте Вашу нову програму на Дрон
- Модифікуйте основну програму таким чином, щоб вмикались всі світлодіоди, які має Дрон: PA5, PA7, PB0, PA12, PB3.
- Завантажте Вашу нову програму на Дрон