задача. лабораторная работа 3. Подключение клавиатуры
Скачать 0.73 Mb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ ЛАБОРАТОРНАЯ РАБОТА № 3 На тему: «Подключение клавиатуры» Дисциплина: (Специальность): «Электроника, электротехника, радиотехника»
Москва - 2022 Тема: Подключение клавиатуры. Цель: Научиться подключать клавиатуру. Задание 1 Подключить клавиатуру к плате. 2 Запрограммировать работу с клавиатурой (п.4.1-4.2). 3 Оформить отчет. 4.1 Подключение матричной клавиатуры к ArduinoИногда мы сталкиваемся с проблемой нехватки портов на Arduino. Чаще всего это относится к моделям с небольшим количеством выводов. Для этого была придумана матричная клавиатура. Такая система работает в компьютерных клавиатурах, калькуляторах, телефонах и других устройствах, в которых используется большое количество кнопок. Для Arduino чаще всего используются такие клавиатуры: Самыми распространенными являются 16 кнопочные клавиатуры 4x4. Принцип их работы достаточно прост, Arduino поочередно подает логическую единицу на каждый из 4 столбцов, в этот момент 4 входа Arduino считывают значения, и только на один вход подается высокий уровень. Это довольно просто, если знать возможности управления портами вывода в Arduino, а так же портами входа/ввода. Для программирования можно использовать специализированную библиотеку Keypad, но в этом задании не будем её использовать для большего понимания работы с матричной клавиатуры. Подключаем клавиатуру в любые порты ввода/вывода. На красные порты будем подавать сигналы, а с синих будем их принимать. Зачастую на синие провода подводят подтягивающие резисторы, но мы их подключим внутри микроконтроллера Arduino. В программе будем вычислять нажатую кнопку и записывать её в Serial порт. В данном методе есть один значительный недостаток: контроллер уже не может выполнять других задач стандартными методами. Эта проблем решается подключением матричной клавиатуры с использованием прерываний. int PinOut[4] {5, 4, 3, 2}; // пины выходы int PinIn[4] {9, 8, 7, 6}; // пины входа int val = 0; const char value[4][4] { {'1', '4', '7', '*'}, {'2', '5', '8', '0' }, {'3', '6', '9', '#'}, {'A', 'B', 'C', 'D'} }; // двойной массив, обозначающий кнопку int b = 0; // переменная, куда кладется число из массива(номер кнопки) void setup() { pinMode (2, OUTPUT); // инициализируем порты на выход (подают нули на столбцы) pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, INPUT); // инициализируем порты на вход с подтяжкой к плюсу (принимают нули на строках) digitalWrite(6, HIGH); pinMode (7, INPUT); digitalWrite(7, HIGH); pinMode (8, INPUT); digitalWrite(8, HIGH); pinMode (9, INPUT); digitalWrite(9, HIGH); Serial.begin(9600); // открываем Serial порт } void matrix () // создаем функцию для чтения кнопок { for (int i = 1; i <= 4; i++) // цикл, передающий 0 по всем столбцам { digitalWrite(PinOut[i - 1], LOW); // если i меньше 4 , то отправляем 0 на ножку for (int j = 1; j <= 4; j++) // цикл, принимающих 0 по строкам { if (digitalRead(PinIn[j - 1]) == LOW) // если один из указанных портов входа равен 0, то.. { Serial.println( value[i - 1][j - 1]); // то b равно значению из двойного массива delay(175); } } digitalWrite(PinOut[i - 1], HIGH); // подаём обратно высокий уровень } } void loop() { matrix(); // используем функцию опроса матричной клавиатуры } С использованием библиотеки считывание данных с цифровой клавиатуры упрощается. #include const byte ROWS = 4; const byte COLS = 3; char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; byte colPins[COLS] = {8, 7, 6}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); if (key != NO_KEY){ Serial.println(key); } } 4.2 Подключение клавиатуры 4*4 и пьезоизлучателя к ArduinoТеперь научимся подключать устройство ввода к Ардуине. В этом примере разберемся, как подключить мембранную клавиатуру 4*4 Данный пример будет выполнять две задачи: Первая задача: определяет, какая из клавиш была нажата на клавиатуре и передать информацию по сериал порту на компьютер, где в "мониторе последовательного порта ". Вторая задача: при каждом нажатии клавиш издавать звуковой сигнал. У каждой клавиши звуковой сигнал будет разный. В данном уроке нам понадобится: Arduino Клавиатура 4x4 кнопки Зуммер пьезоэлектрический Набор проводов ПАПА-МАМА Провода Папа-Папа или Набор проводов для макетирования 65 шт. Для реализации проекта нам необходимо установить библиотеки: Библитетка keypad для клавиатуры 4x4 Сборка: 1) Клавиатуру удобнее всего подключить к Ардуине проводками Папа-Папа. Контакты на клавиатуре отсчитываются слева на право.
Контакты к которым подключаем клавиатуру, могут быть перенастроены на любые другие цифровые контакты. Настраиваются здесь: byte rowPins[ROWS] = {11,10, 9, 8}; byte colPins[COLS] = {7, 6, 5, 4}; 2) Звуковой сигнал будет издаваться с помощью зуммера, его подключаем следующим образом:
Контакт Pin3 так же может быть изменен на любой удобный вам цифровой выход. Настраивается здесь: tone(3, (int)key*10, 300); // 3 - это и есть номер цифрового порта Скетч: Теперь, если все подключено и библиотеки установлены, можно приступить к загрузке скетча. #include const byte ROWS = 4; const byte COLS = 4; char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; byte colPins[COLS] = {5, 4, 3, 2}; Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); } void loop(){ char customKey = customKeypad.getKey(); if (customKey){ Serial.println(customKey); } } Список литературы: 1. К. Гленн Системное администрирование в школе, вузе, офисе. - М.: СОЛОН-ПРЕСС, 2021. - (Серия «Элективный курс. Профильное обучение»). 2. Н. В. Максимов, И. И. Попов Компьютерные сети: учебное пособие для студентов учреждений среднего профессионального образования. - М.: Форум, 2019. 3. В. Олифер, Н. Олифер Основы компьютерных сетей. - СПб.: ПИТЕР, 2019. - (Серия «Учебное пособие»). 4. Введение в Телекоммуникационные технологии. / Под ред. В.И. Журавлева. - М., 2019. - 239 с. 5. Пилиповский В.Я. Требования к личности техника в условиях высокотехнологического общества // Наука и техника. - 2021. - № 5. - С. 97-103. 6. Петражицкий Л.И. Техника научного самообразования // Татьянин день. - 2017. - №3(23). - авг. - С. 8-10. 7. Иванов Ф.Ф, Петров В.В., Сидоров Т.Т., Соловьева А.А. Электронный журнал "Исследовано в России", 3, 2017. 8. Майоров В. Г., Гаврилов А. И. Практический курс программирования микропроцессорных систем // Машиностроение. 2019. 9. Фрибель В., Ролоф Х., Шиллер Х. Программирование микропроцессоров // Энергоиздат. 2021. 10. Егоров О. Д., Подураев Ю. В. Конструирование мехатронных модулей. -- М.: Издательство МГТУ «Станкин», 2004. - 368 с. 11. Герман-Галкин С.Г. Matlab&Simulink. Проектирование мехатронных систем на ПК. - СПб.: КОРОНА-Век, 2008 - 368 с. 12. Ким К.К., Системы электродвижения с использованием магнитного подвеса и сверхпроводимости: Монография. - М.: ГОУ «Учебно-методический центр по образованию на железнодорожном транспорте», 2007. - 360 с. 13. Цыган А.Б., Цыган Б.Г., Мокроусов С.Д. Современное вагоностроение: Монография: в 4-х т. - Том I.:Железнодорожный подвижной состав. - Харьков: Корпорация «Техностандарт», 2008. - 432 с. 14. Журавлев Ю.Н. Активные магнитные подшипники: Теория, расчет, применение. - СПб.: Политехника, 2019. - 206 с., ил. 15. Вышков Ю. Д., Иванов В. И. Магнитные опоры в автоматике. - М.: Энергия, 2019. - 160 с., ил. 16. Осокин Ю. А., Герди В. Н., Майков К. А., Станкевич Н. Н. Теория и применение электромагнитных подвесов. - М.: Машиностроение, 2019. - 284 с. 17. Буль Б. К., Буль О. Б., Азанов В. А., Шоффа В. Н. Электромеханические аппараты автоматики: Учеб. для вузов по спец. «Электрич. аппараты». - М.: Высш. шк., 2021. - 303 с., ил. 18. Пассивные магнитные подшипники (подвесы) на постоянных магнитах URL: (дата обращения: 13.02.2019). 19. Мартыненко Ю. Г. О проблемах левитации тел в силовых полях 1996. (дата обращения: 13.02.2021). |