Матричная мембранная клавиатура

Step 3: Writing in Our Pc

For receiving the characters send by the keyboard we need a program that capture the data and send the keys to the desired program in our Pc. Download this program and follow the next steps for a correct communication between our Pc and the bluetooth module:

  1. Turn on the bluetooth in the Pc.
  2. Connect and pair the bluetooth module HC-05 with our PC.
  3. Open the configuration window of the bluetooth in the Pc, select the tab (ports com) and looks for the output port number. (This port number will be assigned to the serial port of the program in visual basic)
  4. Execute the program, select the port number of the last setp and press the connect (conectar )button.
  5. If you got no errors, open notepad for example, start to write in the keyboard and the pressed keys must be shown in the notepad.

Download here the program in visual basic 2010.

I hope you liked this project and vote for it in the sensor contest.

If you have any suggestions, comments please let me know it.

Описание

Матричная клавиатура

Библиотека служит для использования совместно с Arduino клавиатур матричного типа. Текущая версия библиотеки (3.1) поддерживает множественные нажатия.

Данная библиотека была создана для создания уровня абстракции для аппаратного обеспечения. Она улучшает читаемость кода, скрывая от пользователя вызовы функций и .

Версия 3.0 (опубликована 19 июля 2012) была переписана для поддержки по умолчанию множественных нажатий. Но для тех, кому всё еще изначальная функциональность с одиночными нажатиями, библиотека обеспечивает полную обратную совместимость.

Вам нет необходимости использовать внешние резисторы или диоды, так как библиотека использует внутренние подтягивающие резисторы в микроконтроллере на Arduino и дополнительно обеспечивает высокое входное сопротивление на всех неиспользуемых выводах столбцов.

Загрузка, установка и импорт

Данная библиотека сейчас доступна через менеджер библиотека в Arduino IDE. Если вы используете современную IDE (версия 1.6.2 и выше), то можете просто использовать меню:

Скетч → Подключить библиотеку → Управлять библиотеками… А затем найти Keypad.

Когда найдете, нажмите на записи, и появится кнопка «Установка». ZIP файл приведен ниже для старых версий IDE.

Поместите каталок Keypad в «arduino\libraries\«.

В Arduino IDE создайте новый скетч (или откройте существующий) и выберите в меню «Скетч → Импорт библиотеки → Keypad».

Когда библиотека импортирована, строка «» появится в начале вашего скетча.

FAQ

Как я могу использовать несколько клавиатур?

это класс. Следовательно, для использования нескольких клавиатур вы должны создать объект класса для каждой из них. В примере выше экземпляр класса Keypad keypad был связан с цифровыми выводами 2, 3, 4, 5, 6, 7 и 8. Чтобы добавить клавиатуру, подключенную к цифровым выводам 9, 10, 11, 12, 13, 14, 15 и 16, вы можете создать следующий объект keypad2:

И теперь просто используйте нужные методы любой из клавиатур:

Как я могу использовать ?
В Arduino IDE проследуйте по меню «Файл → Примеры → Keypad → DynamicKeypad». Когда скетч откроется, найдите функцию setup():

Здесь показано, что время устранения дребезга контактов при нажатии кнопки устанавливается равным 250 миллисекунд. Если за это время происходит несколько нажатий на кнопку (что и происходит при дребезге контактов кнопки), то дополнительные нажатия просто игнорируются.

Как управлять Ардуино с клавиатуры

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • светодиод и резистор 220 Ом;
  • сервопривод;
  • провода «папа-папа» и «папа-мама».

Управление светодиодом на Arduino UNO с компьютера

Остальные исполнительные устройства для Arduino UNO вы можете взять на свое усмотрение и самостоятельно попробовать управлять ими через компьютер с помощью USB кабеля. Соберите на макетной плате схему с одним светодиодом из первого занятия Что такое Ардуино и как им пользоваться, а после сборки схемы со светодиодом загрузите следующий скетч в микроконтроллер.

Скетч. Взаимодействие Ардуино и компьютера

int val; // освобождаем память в контроллере для переменой

void setup() {
   Serial.begin(9600); // подключаем последовательный порт
   pinMode(13, OUTPUT); // объявляем пин 13 как выход
}

void loop() {
    // проверяем, поступают ли какие-то команды
   if (Serial.available()) {

       val = Serial.read(); // переменная val равна полученной команде

       if (val == '1') {digitalWrite(13, HIGH);} // при 1 включаем светодиод
       if (val == '0') {digitalWrite(13, LOW);} // при 0 выключаем светодиод

   }
}

Пояснения к коду:

  1. функция проверяет поступление команд с компьютера;
  2. функция читает данные, поступившие в Serial monitor.
  3. в условном операторе стоит знак двойное равенство «соответствие», а в скобках необходимо использовать одинарные кавычки.

Управление сервоприводом на Arduino UNO с компьютера

После сборки схемы загрузите следующий скетч в плату

Скетч. Управление сервоприводом с компьютера

#include <Servo.h> // подключаем библиотеку для сервопривода
Servo servo; // объявляем переменную servo типа "servo"
int val; // освобождаем память в контроллере для переменой

void setup() {
   Serial.begin(9600); // подключаем последовательный порт
   servo.attach(11); // привязываем сервопривод к выходу 11
}

void loop() {
   // проверяем, поступают ли какие-то команды
   if (Serial.available()) {

       val = Serial.read(); // переменная val равна полученной команде

       if (val == '1') { servo.write(10); } // при 1 поворачиваем серво на 10
       if (val == '2') { servo.write(45); } // при 2 поворачиваем серво на 45
       if (val == '3') { servo.write(90); } // при 3 поворачиваем серво на 90

   }
}

Пояснения к коду:

  1. в некоторых примерах программ можно встретить такой вариант проверки появления данных в Serial monitor .
  2. в качестве команд можно использовать не только цифры, но и буквы. При этом имеет значение какая буква — прописная или строчная.

Mouse and Keyboard libraries

These core libraries allow a 32u4 based boards or Due and Zero board to appear as a native Mouse and/or Keyboard to a connected computer.

A word of caution on using the Mouse and Keyboard libraries: if the Mouse or Keyboard library is constantly running, it will be difficult to program your board. Functions such as Mouse.move() and Keyboard.print() will move your cursor or send keystrokes to a connected computer and should only be called when you are ready to handle them. It is recommended to use a control system to turn this functionality on, like a physical switch or only responding to specific input you can control.

When using the Mouse or Keyboard library, it may be best to test your output first using Serial.print(). This way, you can be sure you know what values are being reported. Refer to the Mouse and Keyboard examples for some ways to handle this.

To use this library

Mouse

The mouse functions enable a Leonardo, Micro, or Due to control cursor movement on a connected computer. When updating the cursor position, it is always relative to the cursor’s previous location.

  • Mouse.begin()
  • Mouse.click()
  • Mouse.end()
  • Mouse.move()
  • Mouse.press()
  • Mouse.release()
  • Mouse.isPressed()

Keyboard

The keyboard functions enable a Leonardo, Micro, or Due to send keystrokes to an attached computer.

Note: Not every possible ASCII character, particularly the non-printing ones, can be sent with the Keyboard library. The library supports the use of modifier keys. Modifier keys change the behavior of another key when pressed simultaneously. See here for additional information on supported keys and their use.

  • Keyboard.begin()
  • Keyboard.end()
  • Keyboard.press()
  • Keyboard.print()
  • Keyboard.println()
  • Keyboard.release()
  • Keyboard.releaseAll()
  • Keyboard.write()

Examples

  • KeyboardAndMouseControl: Demonstrates the Mouse and Keyboard commands in one program.
  • KeyboardMessage: Sends a text string when a button is pressed.
  • KeyboardLogout : Logs out the current user with key commands
  • KeyboardSerial: Reads a byte from the serial port, and sends back a keystroke.
  • KeyboardReprogram : opens a new window in the Arduino IDE and reprograms the board with a simple blink program
  • ButtonMouseControl: Control cursor movement with 5 pushbuttons.
  • JoystickMouseControl: Controls a computer’s cursor movement with a Joystick when a button is pressed.

Last revision 2019/12/25 by SM
Reference Home

Примеры

Библиотека снабжена несколькими примерами. Немного видоизменённые примеры представлены ниже.

HelloKeypad

Пример рассчитан на клавиатуру 4х3, поэтому необходимо внести небольшие изменения в коде (выделено жирным).

Залейте прошивку, запустите Serial Monitor и нажимайте на клавиши. Символ нажатой клавиши должен отображаться на экране.

MultiKey

Пример позволяет обрабатывать одновременные нажатия клавиш. Он также предназначен для клавиатуры 4х3, поэтому внесём аналогичные изменения в код.

Для демонстрации сначала была нажата клавиша «А». Удерживая её, нажал на клавишу «2», которую затем отпустил.

Работа схемы

Схема проектируемого нами калькулятора представлена на следующем рисунке.

Напряжение +5V и землю для схемы можно непосредственно получить с контактов 5V и ground платы Arduino. Саму плату Arduino можно запитать от компьютера через USB кабель, от батарейки 9 В или адаптера на 12 В.

Необходимые соединения в представленной схеме показаны в следующей таблице.

Контакт Arduino Куда подсоединен
D0 1-й контакт клавиатуры
D1 2-й контакт клавиатуры
D2 3-й контакт клавиатуры
D3 4-й контакт клавиатуры
D4 5-й контакт клавиатуры
D5 6-й контакт клавиатуры
D6 7-й контакт клавиатуры
D7 8-й контакт клавиатуры
D8 Register select pin of LCD (pin 4)
D9 Enable pin of LCD (pin 6)
D10 Data pin 4 (pin 11)
D11 Data pin 4 (pin 11)
D12 Data pin 4 (pin 11)
D13 Data pin 4 (pin 11)
+5V Vdd pin of LCD (pin 2)
Ground Vss,Vee and RW pin of LCD (pin 1,3 and 5)

Некоторые платы Arduino могут выдавать ошибку при загрузке в них программы в то время когда что-либо подсоединено к их контактам 0 и 1. Поэтому если вы столкнулись с такой ошибкой, просто отключите клавиатуру на время загрузки программы.

Когда все соединения в схеме сделаны, ваша конструкция должна выглядеть примерно следующим образом:

Несколько примеров из моей практики

  • расшарить скриншот без обработки через гугл драйв (использую, когда надо очень быстро создать ссылку и скинуть в чат, или когда не надо обрабатывать изображение);
  • создать видеозапись и отправить ее в редактор;
  • создать скриншот, и без обработки и вопросов сохранить на жесткий диск;
  • создать скриншот, и скопировать его в буфер обмена;
  • стрелка;
  • линия;
  • подсвеченная область;
  • вставка текста;
  • сглаживание слоев;
  • вставка маркеров;
  • redo и undo, они же при нажатии на кнопку уровня L1 уменьшают\увеличивают шрифт в текстовой вставке;
  • основная кнопка снятия скриншотов (отправляет изображение в редактор);
  • кнопка ESC, на случай, если надо изменить область захвата;
  • обычный запуск консоли:
  • L1 + кнопка ADB — запуск с удалением данных из буфера обмена (что бы не подтягивать старые логи);
    Прописываем в bat:
  • Все логи с ADB сохраняем в текстовый файл с таким форматом имени: ADB_logs_»%hour%».»%minute%».»%sec%_%day%.%month%.%year%.txt
    Прописываем в bat:
  • Первый открывает url вида:
  • L1 + кнопка открывает форму нового письма:

Задача:Дано:Решение:

  • открываем веб-форму со списком вопросов;
  • копируем вопрос в буфер обмена (я использую для этого доп. клавиши на мышке);
  • переводим фокус в Notepad++;
  • жмем на макро клавишу, которая находит текст вопроса и прячет окно поиска, оставляя подсвеченным текст вопроса с правильным ответом в диапазоне от -3 до 3;
  • кликаем в веб-форме на правильный ответ и тд.;

Результат

Step 2: Become Wireless…

Lets use the pins 4 and 5 of the arduin for the serial communication, so there is to import the library SoftwareSerial:

#include <SoftwareSerial.h>

Create an object called blue and set the data rate in 9600.

SoftwareSerial blue(4,5); //Rx,Tx

blue.begin(9600);

The full code is:

#include <PS2Keyboard.h>#include <SoftwareSerial.h>

char rec;

SoftwareSerial blue(4,5); //Rx,Tx

const int PinData = 3;

const int PinClock = 2;

PS2Keyboard teclado;

void setup()

{

delay(1000);

teclado.begin(PinData, PinClock);

blue.begin(9600);

}

void loop()

{ // If the keyboard is available

if (teclado.available())

{ // Reads the pressed key

char c = teclado.read(); // Checks some special keys

if (c == PS2_ENTER)

{

blue.println(«ent»);

}

else if (c == PS2_TAB)

{

blue.println(«tab»);

}

else if (c == PS2_ESC)

{

blue.println(«esc»);

}

else if (c == PS2_BACKSPACE)

{

blue.println(«bsp»);

}

else if (c == PS2_PAGEDOWN)

{

blue.println(«pgd»);

}

else if (c == PS2_PAGEUP)

{

blue.println(«pgu»);

}

else if (c == PS2_LEFTARROW)

{

blue.println(«lft»);

}

else if (c == PS2_RIGHTARROW)

{

blue.println(«rgt»);

}

else if (c == PS2_UPARROW)

{

blue.println(«upk]»);

}

else if (c == PS2_DOWNARROW)

{

blue.println(«dwn»);

}

else if (c == PS2_DELETE)

{

blue.println(«del»);

}

else

{ // Print the normal characters

blue.println(c);

}

}

}

Download here the code for arduino.

Next step receive the keys send…

Работа схемы

Схема подключения клавишной панели к плате Arduino Uno представлена на следующем рисунке.

Жидкокристаллический (ЖК) дисплей 16×2 использует 16 контактов для своей работы в случае если нужен черный цвет. Если черный цвет не нужен, то достаточно 14 контактов. В этом случае контакты черного цвета можно либо запитать, либо оставить их как есть. То есть из 14 контактов ЖК дисплея мы имеем 8 контактов для данных (7-14 или D0-D7), 2 контакта для подачи питания (1&2 или VSS&VDD или GND&+5v), 3-й контакт для управления контрастностью (VEE) – определяет насколько «толстыми» будут выглядеть символы на экране, и 3 управляющих контакта (RS&RW&E).

В представленной схеме подключения клавишной панели к плате Arduino Uno мы использовали только два управляющих контакта ЖК дисплея – это позволяет лучше понять логику работы схемы начинающим. Контакт для управления контрастностью и READ/WRITE сравнительно редко используются и в нашем случае их можно замкнуть на землю. Это переводит ЖК дисплей в режим чтения и обеспечивает ему максимальную контрастность. Поэтому нам нужно только управлять состоянием контактов ENABLE и RS чтобы передавать символы и данные на ЖК дисплей. Более подробно об этих процессах можно прочитать в статье о подключении ЖК дисплея к плате Arduino.

В схеме необходимо сделать следующие соединения с ЖК дисплеем:
PIN1 или VSS – на землю
PIN2 или VDD или VCC – к источнику питания +5 В
PIN3 или VEE – на землю (обеспечивает наилучшую контрастность – лучше для начинающих)
PIN4 или RS (выбор регистра) – к контакту PIN8 ARDUINO UNO
PIN5 или RW (Read/Write) – на землю (переводит ЖК дисплей в режим чтения, что упрощает взаимодействие с ним для начинающих)
PIN6 или E (Enable — доступность) к контакту PIN9 ARDUINO UNO
PIN11 или D4 – к контакту PIN10 ARDUINO UNO
PIN12 или D5 – к контакту PIN11 ARDUINO UNO
PIN13 или D6 – к контакту PIN12 ARDUINO UNO
PIN14 или D7 – к контакту PIN13 ARDUINO UNO

Клавишная панель подключена к контактам 0-7 Arduino Uno.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы рассмотрим его наиболее важные фрагменты.

Вначале в программе для Arduino необходимо подключить библиотеки, которые мы будем использовать. Библиотека для работы с ЖК дисплеем по умолчанию присутствует в Arduino IDE. А библиотеку для работы к клавиатурой необходимо скачать с Github. По приведенной ссылке вы скачаете ZIP файл с библиотекой, добавьте ее в Arduino IDE с помощью инструкции Sketch -> Include Library -> Add .ZIP и укажите путь к файлу с библиотекой.

Перед началом работы с клавиатурой мы должны в программе с помощью переменных ROWS и COLS указать какое количество строк и столбцов имеет клавиатура, которую мы подключаем к плате Arduino. Также мы должны указать карту клавиатуры, то есть какие клавиши она имеет в своем составе и на каких местах.

Arduino

const byte ROWS = 4; // четыре строки
const byte COLS = 4; // четыре столбца

// указываем карту клавиатуры (Keymap)
char keys = {
{‘1′,’2′,’3′,’A’},
{‘4′,’5′,’6′,’B’},
{‘7′,’8′,’9′,’C’},
{‘*’,’0′,’#’,’D’}
};
byte rowPins = { 0, 1, 2, 3 };//контакты платы Arduino, к которым подсоединены контакты строк клавиатуры (ROW0, ROW1, ROW2 и ROW3)
byte colPins = { 4, 5, 6, 7 }; // контакты платы Arduino, к которым подсоединены контакты столбцов клавиатуры (COL0, COL1, COL2 и COL3)

1
2
3
4
5
6
7
8
9
10
11
12

constbyteROWS=4;// четыре строки

constbyteCOLS=4;// четыре столбца

 
// указываем карту клавиатуры (Keymap)

charkeysROWSCOLS={

{‘1′,’2′,’3′,’A’},

{‘4′,’5′,’6′,’B’},

{‘7′,’8′,’9′,’C’},

{‘*’,’0′,’#’,’D’}

};

byterowPinsROWS={,1,2,3};//контакты платы Arduino, к которым подсоединены контакты строк клавиатуры (ROW0, ROW1, ROW2 и ROW3)

bytecolPinsCOLS={4,5,6,7};// контакты платы Arduino, к которым подсоединены контакты столбцов клавиатуры (COL0, COL1, COL2 и COL3)

После указания необходимых параметров клавиатуры нам необходимо создать объект клавиатуры, с которым мы дальше будем работать в программе.

Arduino

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // создаем объект клавиатуры

1 Keypadkpd=Keypad(makeKeymap(keys),rowPins,colPins,ROWS,COLS);//  создаем объект клавиатуры

Также в программе мы должны указать к каким контактам Arduino подключен ЖК дисплей. В соответствии с соединениями на нашей схеме мы должны использовать следующие команды:

Arduino

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // контакты Arduino, к которым подключен ЖК дисплей
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //создаем объект ЖК дисплея

1
2

constintrs=8,en=9,d4=10,d5=11,d6=12,d7=13;// контакты Arduino, к которым подключен ЖК дисплей

LiquidCrystallcd(rs,en,d4,d5,d6,d7);//создаем объект ЖК дисплея

Внутри функции setup мы просто будем высвечивать на ЖК дисплее имя нашего проекта и после этого сразу переходить к функции loop.

В функции loop мы должны проверять печатается ли что либо на клавиатуре, если печатается, то мы должны распознать что печатается и поместить введенные числа в соответствующие переменные. А после нажатия клавиши “=” мы должны рассчитать результат операции и высветить его на экране ЖК дисплея.

Arduino

key = kpd.getKey(); //сохраняем нажатую клавишу в переменной символьного типа

if (key!=NO_KEY)
DetectButtons();

if (result==true)
CalculateResult();

DisplayResult();

1
2
3
4
5
6
7
8
9

key=kpd.getKey();//сохраняем нажатую клавишу в переменной символьного типа

if(key!=NO_KEY)

DetectButtons();

if(result==true)

CalculateResult();

DisplayResult();

Introduction: Wireless Keyboard With Arduino

By sistemasymicrosTecnimakersFollow

More by the author:

About: My name is José Luis Bejarano Vásquez.Tecnólogo en electrónica, estudiante de ing electrónica, desarrollador de software. Aficionado a la robótica. Blogger.

More About sistemasymicros »

Hi everyone, in this tutorial i am going to show how to build a wireless keyboard with arduino and bluetooth that allows to write remotely to our Pc with Os windows.

See video

The program only allows to send the following letters, due to limitations of the library used.:

  • Alphanumeric characters in lower and uppercase

  • Enter, Tab, delete and backspace.
  • up, down, left and right arrows.
  1. PARTS
  • Arduino One
  • Keyboard Ps2.
  • Bluetooth module HC-05.
  • Jumpers.

Функции

Инициализирует внутреннюю раскладку клавиатуры, чтобы та соотвествовала .
Данная функция будет ждать бесконечно, пока кто-нибудь не нажмет клавишу. Предупреждение: она блокирует весь остальной кода, пока кнопка не будет нажата. Это означает, что не будет происходить ни мигание светодиода, ни обновление LCD дисплея, ничего, кроме выполнения функций прерываний.
Возвращает кнопку, которая нажата, если таковая имеется. Данная функция является неблокирующей.
Возвращает текущее состояние любой из клавиш. Возвращается одно из четырех состояний: , , и .
Дает вам знать, когда изменилось состояние кнопки. Например, вместо проверки нужной клавиши, вы можете проверить, когда клавиша была нажата.
Устанавливает количество миллисекунд, которое пользователь должен удерживать кнопку нажатой, чтобы было вызвано состояние HOLD.
Устанавливает количество миллисекунд, которое клавиатура ждет перед тем, как применить новое нажатие кнопки или событие кнопки. Это «время задержки» в методе обработки дребезга контактов.
Вызывает событие, если используется клавиатура.

Методы класса и определения для работы с множественными нажатиями:

Список активных клавиш. (равен 10) задает максимальное количество клавиш в активном списке.
Заполняет массив активных клавиш (до 10 значений). Возвращает при наличии любых активных клавиш.
Возвращает , если кнопка с кодом нажата.
Поиск клавиши по коду в списке активных клавиш. Возвращает , если клавиша не найдена, или индекс в массиве активных клавиш.

Аналоговые клавиатуры

Принцип работы

В аналоговых клавиатурах для изменения уровня напряжения используются резисторы, а сигнал выходит по одному каналу, который подключается в, собственно, аналоговый пин на плате. Как всё устроено можно понять взглянув на следующую схему:

Подключение к плате

Итак: аналоговый выход клавиатуры соединяем с любым аналоговым пином на плате, контакт VCC на плате соединяем с 3.3V(не смотрите на надпись на самой клавиатуре, которая гласит о 5V — это ошибка), а GND на плате с GND на модуле. Вы можете воспользоватся следующей схемой:

Написания скетча

Здесь не нужно использовать сторонние библиотеки, т.к. всё предельно просто и понятно. Вот собственно и сам код, который считывает нажатую кнопку и выводит её номер, от 1 до 16(слева на право, с верху в низ) либо 0 если ничего не нажато, в монитор порта.

Плюсы и минусы

Плюсы

  • Очень простое подключение
  • Занимает лишь один пин
  • Экономит память, которую вы не тратите под библиотеку
  • Обеспечивает стабильную работу(при условии, если вы не будете нажимать более одной кнопки одновременно)

Минусы

  • Стоит дороже матричных клавиатур
  • Скорее всего единственным способом покупки будет заказывать с Китая и доставка займёт какое-то время

Матричные клавиатуры

Самый простой, дешёвый и популярный вид клавиатур. Он относительно прост в изготовлении и заполняет собой большую часть рынка модулей ардуино. Выглядит чаще всего следующим образом:

Принцип работы

Понять как устроенная данная клавиатура можно изучив следующую схему:

Чтобы понять какая кнопка была нажата, нужно подавать сигнал на первые четыре контакта модуля и смотреть какой сигнал возвращается со второй. Но не стоит пугаться того, что вам придется писать алгоритмы обработки для восьми пинов вручную — в этом нам поможет готовая библиотека «keypad.h», благодаря которой нам не придется изобретать велосипед.

Подключение к плате

Подключение собственно модуля

В этой статье я воспользуюсь следующей схемой подключения:

У Вас наверное возникает вопрос: «Почему я решил использовать пины со второго по девятый, пропустив нулевой и первый?» — дело в том, что некоторые модули, используют их в качестве каналов RX и TX для получение и передачи данных соответственно. К примеру, блютуз модуль. По-этому с учётом возможного дополнения проекта другими модулями, было решено оставить данные пины подключения свободными.

Написание скетча

Для начала, для того, чтобы получить возможность использовать библиотеку для подключения клавиатур в коде, нужно установить её на ваше устройство. Это можно сделать следующим образом: в самой Arduino IDE нажимаем Скетч -> Подключить библиотеку -> Управлять библиотеками… либо используем комбинацию гарячих клавиш «Ctrl + Shift + I». В поиске вбиваем «keypad.h»(без скобочек) и нажимаем «Установка».

После установки приступаем к написанию скетча:

Минусы

  • Слишком много пинов нужно подключить для работы. Это довольна крупная проблема, если вы создаёте не калькулятор или кодовый замок, а более масштабный проект, в котором еще нужно задействовать огромное количество различных модулей — возможно им просто не хватит пинов.
  • Слишком низкое качество выполнения модуля: никто вам не гарантирует постоянный стабильный сигнал. Оригинальные клавитуры выполнены не на очень высоком уровне, а если вы вообще сделали заказ на Aliexpress, то скорее всего, вам предстоит исправлять косяки китайских инженеров паяльником, чтобы добится стабильной работы.
  • Используется дополнительная библиотека, которая также будет занимать память микроконтроллера, которой у него и так не очень много. Если вы пишите большой проект с множеством функций и вычислений и вам каждый байт на счету нужно считывать данные с клавиатуры вручную либо использовать аналоговую клавиатуру.

Программирование клавиш

  • запускаем ранее установленную программу MPOSMaster;
  • создаем новый проект, и указываем наш тип оборудования (на данный момент я использую USB версию на 64 копки, купленную все так-же на доске объявлений);
  • мы можем задать любую последовательность или комбинацию символов для 4-х слоев, но не более 42 символов в одном слое (ограничение памяти контроллера);
  • задать макрос можно или вводом с клавиатуры при помощи окна “захвата”, или вставляя коды нажатия, отпускания или клика клавиши вручную. При помощи ручного ввода есть возможность задать комбинации клавиш такого вида Ctrl+Alt+Shift+Win+”x”;
  • также есть возможность в любом месте макроса вставить паузу от 0,1s до 1,6s. Если нужна большая пауза или не стандартная, можно вставлять несколько пауз подряд;
  • мы можем задать звуковой сигнал нажатия: короткий, средний или длинный;
  • мы можем включить “Автоповтор” для клавиши. Если он отключен, макрос выполняется только один раз, вне зависимости от того, как долго мы держим клавишу;