====== Матричная клавиатура 4х4 ======
===== Описание =====
Матричная клавиатура на 16 кнопок. Отличается своей малой толщиной (1-2мм) и высокой надежностью в работе. Обратная сторона снабжена клейкой поверхностью. 

==== Технические характеристики ====
  * Количество кнопок: 16

==== Физические размеры ====
  * Клавиатура (Д х Ш х В): 69 х 78 х 1 мм
  * Соединение (Д х Ш х В): 89 х 22 х 3 мм

==== Плюсы использования ====
  * Простое и недорогое решение
  * Прост в подключении

==== Минусы использования ====
  * Используется много выводов контроллера

===== Примеры подключения и использования =====
**Пример 1:** В примере иллюстрируется подключение модуля к контроллеру и получение данных с кнопки с последующим выводом данных в Serial-порт.(Примеры тестировались на контроллере Smart UNO)

^ Что нужно                                                                                                               ^  Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                            |  1           |
| [[http://smartelements.ru/collection/moduli/product/matrichnaya-klaviatura-4h4|Матричная клавиатура 4х4]]               |  1           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]]  |  8           |


**Схема подключения:**
{{ :главная:модули:matrix_44.jpg |}}

**Скетч для загрузки:**
<file Arduino>
int columnPins[4] = {8, 9, 10, 11}; // пины выхода (колонки)
int rowPins[4] = { 4, 5, 6, 7}; // пины входа (строки)

//массив кнопок клавиатуры
const char value[4][4] 
{ {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
  };


void setup()
{
  //установка пинов выхода на вывод
  for (int i=0; i < 4; i++)
  {
   pinMode (columnPins[i], OUTPUT);
   digitalWrite(columnPins[i], HIGH);
  }

  //установка пинов входа на ввод
  for (int j=0; j < 4; j++)
  {
   pinMode (rowPins[j], INPUT);
   digitalWrite(rowPins[j], HIGH);
  }

  Serial.begin(9600); // инициализация Serial - порта

}
 
void loop()
{  
  for (int i = 1; i <= 4; i++) // цикл по столбцам
  {
    digitalWrite(columnPins[i - 1], LOW);  // отправить 0 на пин
    
    for (int j = 1; j <= 4; j++) // цикл по строкам
   {
      if (digitalRead(rowPins[j - 1]) == LOW) // если принят 0 сигнал на пине
      { 


        //вывод информации номера колонки и строки
        Serial.print(i-1);
        Serial.print("|");
        Serial.print(j-1);

         //определение и вывод значения
        Serial.print(" value: ");
        Serial.println(value[j - 1][i - 1]);
      
        }
      
       
      }
    delay(50);  //задержка
    digitalWrite(columnPins[i - 1], HIGH); // вернуть высокий уровень на пин 
   }
    
   
 }  
</file>
