Ім'я файлу: ПроES_2.doc Розширення: doc Розмір: 747кб. Дата: 09.12.2020 скачати Пов'язані файли: Документ Microsoft Office Word.docx Міністерство освіти і науки України Харківський національний університет радіоелектроніки
Звітз лабораторної роботи №2 дисципліна: «Програмування Embedded System» Дослідження архітектури ARDUINO UNО 3 для управління
Виконали: Перевірив: ст. гр. СПм-20-2 к.т.н., доц. Токарев В.В. Задорожний О.В. Смирнов В.О. Торба О.О. Харків 2020 2.1 Мета роботи Дослідження архітектури ARDUINO UNО 3. Створення проекту в середовищі моделювання AUTODESK TINKERCAD на основі MCU ATmega 328P, з метою управління LCD-дисплеєм - WH1602 на основі мікроконтролера - HD44780 і температурним датчиком ТМР36. 2.2 Завдання 1. Необхідно створити проект в середовищі Autodesk Tinkercad. 2. Підключити живлення на Arduino Uno 3. 3. На мультиметрі №1 з'явиться вхідна напруга xxV, яка за формулою (рис. 2.1), перераховується в температуру навколишнього середовища. 4. На мультиметрі №2 з'явиться вихідна напруга 5V необхідна для підсвічування екрану LCD WH1602 - дисплея. 5. За допомогою потенціометра №1 моделюється робота температурного датчика TMP36, а за допомогою потенціометра №2 регулюється підсвічування екрану LCD WH1602 - дисплея. 6. Підключити LCD-дисплей до MCU - LiquidCrystal lcd (12,11,5,4,3,2). 7. Створити бітову маску символу: byte p20[8]= { B10000, B10000, B10000, B10000, B10000, B10000, B10000, }; byte p40[8]= { B11000, B11000, B11000, B11000, B11000, B11000, B11000, }; byte p60[8]= { B11100, B11100, B11100, B11100, B11100, B11100, B11100, }; byte p80[8]= { B11110, B11110, B11110, B11110, B11110, B11110, B11110, }; byte p100[8]= { B11111, B11111, B11111, B11111, B11111, B11111, B11111, 74 }; byte avtor[8]= { B00010, B00001, B11001, B00001, B11001, B00001, B00010, }; Лістинг 2.1 – Бітова маска символу 8. Ініціалізувати створені масиви lcd.createChar(1, p20);......... lcd.createChar(6, avtor). 9. Встановити курсор в (0) -0 стовпець і (0) – 1-й рядок lcd.setCursor(0,0). 10. Очищити рядок, друкувати 16-прогалин lcd.print(" "). 11. Встановити курсор в (4) -стовпець (0) -1-й рядок lcd.setCursor(4,0). 12. Друкувати шифр своєї групи lcd.print ("SPm-20-2"). 13. Встановити курсор в (0) -0 стовпець - 1-2-й рядок lcd.setCursor(0,1). 14. Друкувати ПІБ lcd.print ("FAMILIYA I.O.") 15. Очищити дисплей. 16. Встановити курсор в (7) - стовпець і (0) - 1-й рядок lcd.setCursor(7,0). 17. Друкувати створені бітові маски символу lcd.print("\1");..... lcd.print("\6"). 18. Очищити дисплей. 19. Встановити курсор в (0) -0 стовпець і (0) - 1 рядок lcd.setCursor (0,0) і створюємо біжучий рядок 6-го символу. 20. За допомогою потенціометра №1, провести імітаційне моделювання (задати 5-ть будь-яких значень напруг і за формулою перерахувати в температуру навколишнього середовища). Значення температури вивести в лівий нижній кут LCD-дисплея в форматі: “tem.C=”. 21. Провести масштабування АЦП (0-1023) в (0-5). 22. Дані з АЦП вивести Serial порт монітора. 2.3 Короткий зміст ходу виконання роботи 2.3 1 Створено проект в середовищі Autodesk Tinkercad (рис. 2.2). Рисунок 2.1 – Створений проект 2.3.2 Підключено живлення на Arduino Uno 3 (на мультиметрах з'являється вихідна напруга 5V). Зображено на рисунку 2.3. Приклади роботи схеми відображена на рисунках 2.4 – 2.7. В той час на порт монітора послідовного інтерфейса відбувається вивід змін потенціометра (рис. 2.8). Рисунок 2.2 – Arduino Uno 3 з підключеним живленням Рисунок 2.3 – Приклад роботи схеми №1 Рисунок 2.4 – Приклад роботи схеми №2 Рисунок 2.5 – Приклад роботи схеми №3 Рисунок 2.6 – Приклад роботи схеми №4 Рисунок 2.7 – Вивід на порт монітора 2.3.3 Код проекту #include "LiquidCrystal.h" //-------------------------------------------- byte p20[8]= { 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, }; byte p40[8]= { 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, }; byte p60[8]= { 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, }; byte p80[8]= { 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, }; byte p100[8]= { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, }; byte avtor[8]= { 0b00010, 0b00001, 0b11001, 0b00001, 0b11001, 0b00001, 0b00010, }; //-------------------------------------------- constexpr int k_charsInRow = 16; constexpr int k_rowCount = 2; LiquidCrystal g_lcd(12,11,5,4,3,2); //-------------------------------------------- void setup() { Serial.begin(9600); g_lcd.begin(k_charsInRow, k_rowCount); g_lcd.createChar(1, p20); g_lcd.createChar(2, p40); g_lcd.createChar(3, p60); g_lcd.createChar(4, p80); g_lcd.createChar(5, p100); g_lcd.createChar(6, avtor); } //-------------------------------------------- void clear() { constexpr char* k_emptyLine = " "; g_lcd.setCursor(0, 0); g_lcd.print(k_emptyLine); g_lcd.setCursor(0, 1); g_lcd.print(k_emptyLine); } //-------------------------------------------- void printGroupName() { g_lcd.setCursor(4, 0); g_lcd.print("SPm-20-2"); g_lcd.setCursor(0, 1); g_lcd.print("Smirnov V.O."); } //-------------------------------------------- void printPreparedChars() { constexpr char* preparedChars[] = {"\1", "\2", "\3", "\4", "\5", "\6"}; g_lcd.setCursor(7, 0); for (const char* preparedChar : preparedChars) { g_lcd.print(preparedChar); delay(200); }; } //-------------------------------------------- void printRunningChar() { constexpr int k_delay = 100; g_lcd.setCursor(0, 0); g_lcd.print("\6"); delay(k_delay); for (int i = 0; i < k_charsInRow - 1; ++i) { g_lcd.setCursor(i, 0); g_lcd.print(" \6"); delay(k_delay); } g_lcd.setCursor(k_charsInRow - 1, 0); g_lcd.print(" "); delay(k_delay); } //-------------------------------------------- void loop() { clear(); printGroupName(); delay(5000); clear(); printPreparedChars(); delay(5000); clear(); printRunningChar(); delay(5000); char buffer[16]; for (int i = 0; i < 5; ++i) { const int value = analogRead(0); const int temperature = (value - 500) / 10; itoa(temperature, buffer, 10); g_lcd.setCursor(0, 1); g_lcd.print("tem.C="); g_lcd.print(buffer); const int mapped = map(value, 0, 1023, 0, 5); Serial.println(mapped); delay(2000); } } Лістинг 2.2 – Реалізація виконання завдання 2.3.4 Висновки В результаті лабораторної роботи було створено проект в середовищі Autodesk Tinkercad на основі MCU ATmega 328P й виконано завдання, а саме: підключення та управління LCD - дисплеєм - WH1602 на основі мікроконтролера - HD44780 і виявлення температури навколишнього середовища за допомогою температурного датчика ТМР36. |