#37. Подключение матричной клавиатуры 4х4 Arduino
Сегодня в уроке рассмотрим принцип работы матричной клавиатуры 4х4. Подключим клавиатуру 4х4 к Arduino и напишем скетч для получения значений при нажатии на кнопки.
Технические параметры матричной клавиатуры для Arduino.
- Разъём: PLS-8;
- Тип шлейфа: плоский, гибкий, 8 pin;
- Длина шлейфа: 75 мм;
- Размер: 77×69×2 мм;
- Масса: 7 г.
Принцип работы клавиатуры 4х4 для Arduino.
Клавиатура выполнена в виде матрицы 4×4, каждая кнопка является областью воздушного зазора между двумя диэлектрическими слоями с нанесенным на них токопроводящим покрытием. Дорожки покрытия одного слоя нанесены горизонтально (выводы 1—4), а другого вертикально (выводы 5—8). Нажатие на кнопку приводит к соединению дорожки одного слоя с дорожкой другого и замыканию одного из выводов 1—4 с одним из выводов 5—8.
Принцип работы очень простой, при нажатии кнопки замыкается контакт между столбцом и строкой, между ними начинает течь ток. Например, при нажатии клавиши «4» происходит короткое замыкание столбца 1 и строки 2. Схема клавиатуры 4 x 4 показана на рисунке ниже.
Подключение матричной мембранной клавиатуры к Arduino.
Необходимые детали:
- Arduino UNO R3.
- Матричная мембранная клавиатура 4х4, 16 кнопок.
- Провод DuPont.
- Кабель USB 2.0.
Схема подключения матричной клавиатуры к Arduino UNO.
Схема подключения матричной клавиатуры к Arduino NANO.
Подключаем матричную клавиатуру к Arduino начиная с 2 цифрового пина до 9. Как показано на схеме подключения.
Установка библиотек:
В данном примере будем использовать библиотеку «Keypad.h» скачать ее можно в «Менеджере библиотек» или внизу статьи в разделе «файлы для скачивания».
В строке поиска вводим «Keypad» находим библиотеку «Keypad by Mark Stanley» и устанавливаем ее.
Пример скетча для работы матричной мембранной клавиатуры с Arduino.
В коде определяем количество рядов и колонок. Данный параметр зависит от типа клавиатуры.
#include <Keypad.h> // Подключение библиотеки Keypad const byte ROWS = 4; // Количество рядов const byte COLS = 4; // Количество строк
Также указываем массив символов кнопок.
char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };
И наконец, пины подключения клавиатуры к Arduino.
byte rowPins[ROWS] = {9, 8, 7, 6}; // Выводы, подключение к строкам byte colPins[COLS] = {5, 4, 3, 2}; // Выводы, подключение к столбцам
Принцип работы достаточно простой. Считываем состояние кнопок и если было нажатие, выводим в монитор порта символ нажатой клавиши.
byte rowPins[ROWS] = {9, 8, 7, 6}; // Выводы, подключение к строкам byte colPins[COLS] = {5, 4, 3, 2}; // Выводы, подключение к столбцам
На основе данного урока можно сделать кодовый замок по аналогии с кодовым замком, который я делал на дисплее Nextion. Но на этом возможности применения матричной клавиатуры в Arduino проектах не заканчивается. С помощью матрицы кнопок можно управлять элементами умного дома, станком с ЧПУ и пр.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал
Всем Пока-Пока.
И до встречи в следующем уроке.
Файлы для скачивания
Скачивая материал, я соглашаюсь с Правилами скачивания и использования материалов.
скетча для работы матричной мембранной клавиатуры с Arduino.ino | 1 Kb | 240 | Скачать | |
библиотека «Keypad. | 30 Kb | 235 | Скачать |
SunFounder 4×4 16-клавишная матричная клавиатура для Arduino и Raspberry Pi
Сохранить 0
SunFounderSKU: TS0180
наполнитель
Поделитесь этим продуктом
Матричная клавиатура 4*4 обычно используется в качестве ввода в проекте. Всего у него 16 клавиш, что означает одинаковые входные значения.
Модуль матричной клавиатуры SunFouner 4*4 представляет собой матричную некодированную клавиатуру, состоящую из 16 параллельных клавиш. Клавиши каждой строки и столбца подключаются через контакты снаружи — контакты Y1-Y4, как указано рядом, управляют строками, когда X1-X4 — столбцами.
Для получения дополнительной информации см. http://wiki.sunfounder.cc/index.php?title=4X4_Matrix_Keypad_Module
Спецификация
- Модуль матричной клавиатуры 4×4 с 16 клавишами.
- Размер печатной платы: 5,2 х 7,35 см.
- Удобный и простой в использовании.
- Подходит для применения в проектах по управлению платой расширения MCU.
- Стандартная двусторонняя печатная плата, отверстия диаметром 3 мм в двух углах для удобства крепления.
Комплект поставки
- Модуль клавиатуры 4×4 (провод не входит в комплект) x 1
1. Время обработки заказов
Все заказы обрабатываются в течение 24 часов после их размещения. Обычно мы можем отправить заказ на следующий день. Заказы выходного дня отправляются в следующий понедельник. Вы получите электронное письмо с подтверждением доставки от нашей системы, когда информация о доставке будет загружена.
2. Бесплатная доставка ВСЕХ заказов
Как правило, мы отправляем заказы с бесплатной доставкой без требования минимальной суммы заказа. Вы можете проверить, доступен ли способ бесплатной доставки в вашу страну, в зоне доставки ниже.
Если вы не нашли свою страну в зоне доставки, напишите по телефону [email protected] , и наши сотрудники отдела продаж свяжутся с вами как можно скорее.
Для дистрибьюторов, пожалуйста, свяжитесь с нами по дистрибьютор@sunfounder.com для получения более подробной информации о доставке.
ПРИМЕЧАНИЕ: Все заказы будут отправлены с нашего склада в Китае.
3. Зона доставки
Азия
САР Гонконг, Япония, САР Макао, Малайзия, Филиппины, Россия, Сингапур, Южная Корея, Таиланд, Вьетнам и т. д.
Европа
Австрия, Бельгия, Чехия, Дания, Финляндия, Франция, Германия, Греция, Венгрия, Италия, Литва, Люксембург, Монако, Нидерланды, Норвегия, Польша, Португалия, Словакия, Словения, Испания, Швеция, Швейцария, Турция, Украина, Великобритания и др.
Океания
Австралия, Новая Зеландия
Северная Америка
Канада, Мексика, США
4.
Как я могу отследить свой заказ?ЕСТЬ СЧЕТ SUNFOUNDER?
Полегче! Войдите в свою учетную запись через интернет-магазин, проверьте статус выполнения вашего недавнего заказа. Если заказ был выполнен, нажмите на информацию о заказе, и вы можете найти информацию об отслеживании здесь.
У МЕНЯ ПОКА НЕТ УЧЕТНОЙ ЗАПИСИ
Как только ваш заказ будет упакован и отправлен, вы получите электронное письмо с подтверждением отправки. После этого вы сможете отслеживать свой заказ по ссылке для отслеживания в электронном письме. Если вы еще не получили электронное письмо, свяжитесь с нами по телефону service @sunfounder.com , наши сотрудники отдела продаж свяжутся с вами как можно скорее.
5. Способ доставки и сроки доставки
DHL (заказы на сумму более 400 долларов США)
Срок доставки: 3-7 рабочих дней
Вы можете отслеживать на http://www.dhl.com/ или https://www.17track .net/ru
UPS (заказы на сумму более 400 долларов США)
Срок доставки: 3-7 рабочих дней
Вы можете отслеживать на https://www. ups.com/track или https://www.17track.net/en
USPS
Срок доставки: 7-12 рабочих дней
Вы можете отслеживать на https://www.usps.com/ или https://www.17track.net/en
ЗАРЕГИСТРИРОВАННАЯ АВИА-ПОЧТА
Срок доставки: 12-15 рабочих дней
Вы можете отслеживать на https://www.17track.net/en
* Время доставки — это расчетные сроки доставки, предоставленные нашими партнерами по доставке, и они применяются в пункте отправки, а не в пункте продажи. Как только ваша посылка покидает наш склад, мы не можем контролировать любые задержки после этого момента.
6. Таможенные и импортные сборы
Например, товары, которые вы покупаете на нашем сайте, нельзя просто свободно доставлять из страны в страну. Когда товары ввозятся в другую страну или на таможенную территорию, взимается сбор, называемый таможенной пошлиной. Это взимается местным таможенным органом, куда ввозятся товары.
Если таможенная пошлина подлежит уплате на вашей территории, вы будете нести ответственность за ее уплату властям, поэтому SunFounder не участвует в этом процессе. Подлежит ли уплате таможенная пошлина и в каком размере зависит от множества разных вещей. Например, во многих странах существует «порог низкой стоимости», ниже которого они не взимают таможенную пошлину.
Если вы все же должны заплатить таможенную пошлину, сумма, подлежащая уплате, обычно рассчитывается на основе стоимости товаров и типа импортируемых товаров.
А ЕСЛИ Я НЕ УПЛАЧУ ТАМОЖЕННУЮ ПОШЛИНУ?
Если по какой-либо причине Вы отказываетесь от уплаты таможенной пошлины и посылка возвращается обратно к нам. Если вы все еще не уверены в том, будете ли вы облагаться таможенными сборами, мы рекомендуем связаться с местной таможней для получения дополнительной информации, прежде чем размещать заказ!
PayPalВаша платежная информация надежно обрабатывается. Мы не храним данные кредитной карты и не имеем доступа к информации о вашей кредитной карте.
Декодирование матрицы клавиатуры — простые электронные музыкальные проекты «сделай сам»
Я нашел старую клавиатуру KSP970 стоимостью менее 20 фунтов стерлингов с полноразмерными (нечувствительными к касанию) клавишами, которую выбрасывали из-за коррозии аккумуляторной кислоты. внутри была удалена большая часть печатной платы, но сама клавиатура осталась нетронутой, поэтому я подумал, что будет интересным проектом, чтобы попытаться прочитать клавиатуру.
- Во второй части добавляю MIDI.
Это основные руководства по Arduino для основных концепций, используемых в этом проекте:
- Клавиатура Arduino
- Расшифровка входной матрицы Open Music Labs
Если вы новичок в Arduino, см. страницы «Начало работы».
Список деталей
- Arduino Nano
- 16 светодиодов (дополнительно)
- 8 резисторов 220 Ом (в комплекте со светодиодами — также опционально)
- Макетная плата и соединительные провода
- Выбросить клавиатуру!
The Circuit
Большинство клавиатур и клавишных панелей используют «матричный» метод декодирования нажатий клавиш. Я не буду вдаваться в подробности здесь, но в учебнике Open Music Labs есть отличное описание концепции, но общий принцип заключается в том, что клавиши расшифровываются как «строки» и «столбцы», хотя на музыкальной клавиатуре они естественно последовательно. Если вам повезет, как мне, клавиатура будет иметь два набора соединительных проводов (см. два посеребренных ленточных кабеля на фото) — один для «рядов» и один для «столбцов», которые можно подключить к вашему Arduino IO. булавки.
Хитрость заключается в том, чтобы выяснить, какие клавиши связаны с какими контактами, и вот тут-то и пригодится эта простая схема.
У меня клавиатура на 61 ноту, и каждая из лент имеет ширину 8 проводов. С нижней стороны платы клавиатуры я вижу, что переключатель каждой клавиши подключен через диод к контактам «ряда». Выше я показал только одну ключевую схему, но в учебнике Open Music Lab «матрица» показана более подробно, и здесь, похоже, используется та же схема.
Одно упрощение для меня заключалось в том, что у меня есть несколько действительно дешевых «8-битных» светодиодных «линеек», которые упрощают декодирование ключевой матрицы — они содержат 8 светодиодов и соответствующие резисторы в удобном для макета формате.
Моя окончательная тестовая схема выглядит так:
Я подаю питание на две шины макета (5 В), а затем могу определить, какие клавиши зажигают второй набор светодиодов, и, таким образом, сопоставляю клавиши с комбинациями «строк». » и «столбцы». Обратите внимание, что на приведенной выше фотографии я подал питание на все «ряды», но на практике вам нужно включать питание только по одному, чтобы увидеть, какие клавиши загораются другими светодиодами.
Как только я узнал, как декодируются клавиши (это оказалось довольно просто и логично), я смог подключить его к Arduino и посмотреть, смогу ли я обнаружить нажатия клавиш.
Я использовал Nano, что означает, что я мог относительно просто прикрепить два 8-контактных разъема к двум сторонам платы с одной оговоркой. Я использую аналоговые порты в качестве цифровых выводов ввода-вывода, что отлично работает для A0-A5, но вы не можете использовать таким образом A6 и A7, поэтому мне пришлось перенаправить два последних контакта на D11 и D12. Поскольку у меня был новый дешевый Nano, я смог отпаять контакты на A6 и A7, оставив их неподключенными к 8-контактным разъемам.
Код
После того, как был задействован Nano, я смог установить библиотеку Keypad для Arduino (ищите Keypad и найдите библиотеку, названную Mark Stanley просто «Keypad») и модифицировал демо-скетч MultiKey следующим образом:0003
- Мне нужно расшифровать матрицу 8×8, поэтому нужно обновить массив в начале скетча.
- Поскольку клавиши на моей клавиатуре декодируются последовательно и простым способом, мне не нужно было выполнять какое-либо сложное переупорядочивание клавиш, чтобы они соответствовали номерам выводов Arduino.
- Я хочу в конечном итоге вывести номера MIDI-нот, поэтому я изменил символы в массиве на номера MIDI-нот.
- При печати я заставил код печатать номер ноты MIDI, а не названия букв.
В моей первой попытке строки и столбцы были расположены неправильно и ничего не дали. Отображение, которое я в конечном итоге использовал, было следующим.
константный байт ROWS = 8; константный байт COLS = 8; char keys[ROWS][COLS] = { {36,37,38,39,40,41,42,43}, {44,45,46,47,48,49,50,51}, {52,53,54,55,56,57,58,59}, {60,61,62,63,64,65,66,67}, {68,69,70,71,72,73,74,75}, {76,77,78,79,80,81,82,83}, {84,85,86,87,88,89,90,91}, {92,93,94,95,96,97,98,99} }; byte rowPins[ROWS] = {A0,A1,A2,A3,A4,A5,11,12}; //подключаемся к распиновке ряда kpd байт colPins[COLS] = {2,3,4,5,6,7,8,9}; // подключиться к распиновке столбца kpd
Кажется, это работает очень хорошо.