Главная страница

задача. лабораторная работа 3. Подключение клавиатуры


Скачать 0.73 Mb.
НазваниеПодключение клавиатуры
Анкорзадача
Дата18.03.2022
Размер0.73 Mb.
Формат файлаdocx
Имя файлалабораторная работа 3.docx
ТипЛабораторная работа
#403190

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

ЛАБОРАТОРНАЯ РАБОТА № 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


Данный пример будет выполнять две задачи:

  1. Первая задача: определяет, какая из клавиш была нажата на клавиатуре и передать информацию по сериал порту на компьютер, где в "мониторе последовательного порта ".

  2. Вторая задача: при каждом нажатии клавиш издавать звуковой сигнал. У каждой клавиши звуковой сигнал будет разный.

В данном уроке нам понадобится:

  • Arduino

  • Клавиатура 4x4 кнопки

  • Зуммер пьезоэлектрический

  • Набор проводов ПАПА-МАМА

  • Провода Папа-Папа или Набор проводов для макетирования 65 шт.

Для реализации проекта нам необходимо установить библиотеки:
Библитетка keypad для клавиатуры 4x4

Сборка:

1) Клавиатуру удобнее всего подключить к Ардуине проводками Папа-Папа.

Контакты на клавиатуре отсчитываются слева на право.




Клавиатура 4*4

Arduino (uno)

Контакт 1

pin 11

Контакт 2

pin 10

Контакт 3

pin 9

Контакт 4

pin 8

Контакт 5

pin 7

Контакт 6

pin 6

Контакт 7

pin 5

Контакт 8

pin 4

Контакты к которым подключаем клавиатуру, могут быть перенастроены на любые другие цифровые контакты. Настраиваются здесь:

byte rowPins[ROWS] = {11,10, 9, 8};

byte colPins[COLS] = {7, 6, 5, 4};
2) Звуковой сигнал будет издаваться с помощью зуммера, его подключаем следующим образом:


Зуммер

Arduino

GND

GND

IO

pin 3

VCC

5V или 3V

Контакт 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).


написать администратору сайта