Прикладна наука
У нас 390 гостей і жодного учасника в мережі
Зошити

Мій гандикап не видно
Вправа № 30: Arduino: РК-дисплей
- Вивчіть код Ascii;
- Створення інтерфейсу людина-машина.
Ми використовуємо плату Arduino Uno та модель екрану «РК-клавіатура» від DFROBOT.
+
Ця щитова дошка складається зі стандартного РК-дисплея, 5 кнопок та декількох штифтів для аналогових або цифрових входів/виходів. Схема щита РК-екрану така:
При вимкненому живленні підключіть плату екрану «світлодіодні вимикачі» до плати Arduino. Слідкуйте, щоб не зламали жодні шпильки! Потім підключіть Arduino до ПК за допомогою USB-кабелю.
Дайте відповіді на запитання, використовуючи аркуш уроків на РК-дисплеях.
3.1. Які два типи пам’яті присутні на РК-дисплеї? Для чого вони потрібні ?
3.2. Знайдіть коди для надсилання в DDRAM, щоб виконати такі дії:
Шістнадцятковий код D7-D0
Заблокувати дисплей (дисплей вимкнено)
Перевірте дисплей (дисплей увімкнено) без курсору або миготіння
Поверніть курсор у верхній лівий кут (Повернення додому)
Налаштування дисплея:
8-бітний, однорядковий дисплей, великі символи
3.3. Укажіть послідовність шістнадцяткових кодів, які слід надіслати на дисплей, щоб написати "ПРИВІТАЙ"
3.4. Коли пам’ять порожня, вона містить коди $ FF, поясніть, чому на дисплеї відображаються чорні прямокутники при увімкненні живлення.
Для того, щоб полегшити написання наших програм, ми будемо називати кожен із контактів, що використовуються з інструкцією "#define". Оператор #define є дуже корисною частиною мови C, що дозволяє програмісту дати ім'я константі до компіляції програми. Константи, визначені таким чином мовою Arduino, не займають додаткового місця в пам'яті мікроконтролера. Компілятор замінить посилання на ці константи значенням, встановленим під час компіляції.
Приклад для виводу 8 ми напишемо: #define RS 8 // RS підключений до D8
Отже, буде достатньо написати digitalWrite (RS, HIGH), щоб поставити високий рівень на цьому штифті 8. Це робить програму більш читабельною, не потрібно постійно мати структурну схему перед собою.
Запустіть програмне забезпечення Arduino. Використовуючи структурну схему плати рідкокристалічного екрану, виконайте завдання нижче та в заголовку вашої програми (після коментарів та перед функцією setup ()).
#define RS 8 // RS підключений до D8, контакт 8 Arduino
#define E // E підключений до ____
#define D4 // D4 підключений до ____
#define D5 // D5 підключений до ____
#define D6 // D6 підключений до ____
#define D7 // D7 підключений до ____
5.1. На структурній схемі щита РК-екрану вкажіть, чи використовується РК-дисплей 4-бітним чи 8-бітним.
5.2. Використовуючи курс, що описує процедуру ініціалізації дисплея, напишіть функцію setup ().
6.1. Використовуйте розглянуті алгоритми, щоб записати функції sendOctetOn4bits (байт), sendCommand (commandCode) та sendCharacter (characterCode).
6.2. Напишіть функцію displayHello (), яка надсилає символи повідомлення "HELLO" на дисплей. Ця функція використовує функцію sendCharacter (characterCode) для надсилання листів, а потім sendCommand (CommandCode) для "Повернення додому".
6.3. Напишіть функцію loop (), яка просто викликатиме функцію відображення (Hello).
6.4. Складіть свою програму, перевірте наявність помилок і завантажте її на Arduino. Перевірте відображення повідомлення "HELLO".
Сфотографуйте повідомлення:
Нехай учитель перевірить.
6.5. Змініть повідомлення, що відображається на екрані, напишіть своє ім’я ПІЗНЯ.
Введіть код у функцію loop ():
Щоб вказати адресу комірки, з якої потрібно розпочати показ, перед надсиланням символів потрібно надіслати таку інструкцію:
5.6. Змініть свою програму, щоб помістити Ім'я на рядок1, а ПІЗНЯ на рядок2.
Напишіть код нижче:
Сфотографуйте результат на РК-дисплеї:
Функція printHello () має дуже важку структуру, ми часто повторюємо одне і те ж. Нам потрібно знайти інший спосіб його написання, більш компактний.
Ви збережете коди в таблиці, яка також називається масивом, і знайдете їх відповідно до індексу. Наприклад: повідомлення [0] = 'B' ('B' = ASCII код символу B)
Тут таблиця називається повідомленням, індекс переходить від 0 до 6.
7.1. Оголосіть масив повідомлень на початку програми:
Цей рядок оголошує масив із 7 символів байту типу (байт). '' Дозволяє вам не потрібно шукати коди ASCII літер: компілятор замінить, наприклад, "B" на 0x42.
Щоб надіслати повідомлення “HELLO” на дисплей, ми потім використовуємо цикл for для перегляду масиву. Ось новий алгоритм функції displayHello ();
7.2. Змініть свою програму.
Перевірте і попросіть вчителя перевірити.
Тепер, коли ви знаєте, як запрограмувати РК-дисплей, ви знайдете набагато простіший спосіб управління ним, використовуючи бібліотеку чи бібліотеку. Бібліотеки розробляються розробниками дощок Arduino або приватними особами, які роблять свою програму доступною для полегшення програмування.
Під програмним забезпеченням Arduino натисніть Файл, Приклад, рідкий кристал, а потім HelloWorld. Відкривається наступна програма, очищена від коментарів англійською мовою:
Перший рядок програми #include , попереджає компілятор, що ви збираєтесь використовувати бібліотеку LiquidCrystal.h.
Рідка лінія LiquidCrystal (8,); створює об'єкт під назвою lcd класу LiquidCrystal, передаючи розписування дисплея як параметри: RS, E, D4, D5, D6, D7.
8.1. Змініть номери пінів, призначені дисплею в прикладі програми. Складіть його, запрограмуйте та протестуйте.
8.2. Яка інструкція використовується для запису на дисплей ?
8.3. Яка інструкція використовується для вибору поля, де повідомлення відображається на дисплеї ?
8.4. Збережіть програму під іншою назвою та змініть її, щоб написати "ДОБРО ВІТАЄМО" з центром у першому рядку та "EN STI2D SIN" з центром у другому рядку дисплея. Перевірте і попросіть вчителя перевірити.
Повний зміст функцій, записаних у бібліотеці LiquidCrystal, доступний за адресою http://arduino.cc/en/Reference/LiquidCrystal.
8.5.За допомогою цього сайту змініть попередню програму, щоб нескінченно прокручувати повідомлення на дисплеї зліва направо, а потім справа наліво. Перевірте і попросіть вчителя перевірити.
Мета - написати програму для перевірки правильного функціонування кнопок на щитовій платі. Програма пише на РК-дисплеї:
"КНОПКА ТЕСТУ" по центру на першому рядку дисплея;
"ВИБЕРІТЬ" або "ВЛІВО", "ВГОРУ", "ВНИЗ" або "ВПРАВО" з центром у другому рядку, якщо натиснути кнопку;
"NO PRESS" з центром на другому рядку, якщо жодна з кнопок не натиснута;
Кнопки підключені до аналогового входу A0. Потенціал на цьому штифті змінюється залежно від натиснутої кнопки.
9.1. Напишіть першу програму, яка відображає результат аналого-цифрового перетворення Arduino при натисканні кожної кнопки (Зверніть увагу на ці значення).
9.2. Напишіть повну програму тестування кнопок. Перевірте і попросіть вчителя перевірити.