Перейти к содержанию
Материалы раздела

Спецификация

ЧтоКомментарии
ИдентификаторKEY_MATRIX_4_4
Интерфейс8 GPIOGPIO 1: L1
GPIO 2: L2
GPIO 3: L3
GPIO 4: L4
GPIO 5: H1
GPIO 6: H2
GPIO 7: H3
GPIO 8: H4

Lx: столбцы
Hx: строки
Предоставляетkey1
key2
key3
key4
key5
key6
key7
key8
key9
key10
key11
key12
key13
key14
key15
key16
1 = клавиша нажата
0 = клавиша отпущена
Свойстваrepeat1 = включить функцию повтора, 0 = отключить. При включении этот датчик вызывает обратный вызов при нажатии и удержании клавиши на клавиатурной матрице.
repeat delayКогда вы нажимаете и удерживаете клавишу на клавиатурной матрице, датчик вызывает обратный вызов. Пауза между нажатием клавиши и началом повтора - это задержка повтора, выраженная в миллисекундах.

Значение по умолчанию - 1500 мс.
repeat rateПосле нажатия и удержания клавиши на клавиатурной матрице клавиша начинает повторяться после истечения задержки повтора. Скорость повтора выражается в миллисекундах.

Значение по умолчанию - 500 мс.
Обратные вызовы?yes

Примечания

  • Этот датчик требует 8 GPIO. Мы рекомендуем использовать внешний GPIO с подтяжками, такой как чип PCA9505.
  • Этот датчик выполняет сканирование всей клавиатурной матрицы каждую 1 мс. Вы можете найти принцип работы в этой статье.
  • Аппаратные подтяжки не требуются.
  • Многие дешевые клавиатурные матрицы не включают диоды для каждой клавиши, поэтому вы можете столкнуться с проблемами призраков и маскировки, если используете эти клавиатурные матрицы.
  • Вы можете использовать клавиатурные матрицы с диодами с этим датчиком.

Код

-- Подключить клавиатурную матрицу, используя чип внешнего GPIO
km = sensor.attach("KEY_MATRIX_4_4", 40, 41, 42, 43, 44, 45, 46, 47)

km:callback(
   function(data)
      if (data.key1 == 1) then
         print("клавиша1")
      end

      if (data.key2 == 1) then
         print("клавиша2")
      end

      if (data.key3 == 1) then
         print("клавиша3")
      end

      if (data.key4 == 1) then
         print("клавиша4")
      end

      if (data.key5 == 1) then
         print("клавиша5")
      end

      if (data.key6 == 1) then
         print("клавиша6")
      end

      if (data.key7 == 1) then
         print("клавиша7")
      end

      if (data.key8 == 1) then
         print("клавиша8")
      end

      if (data.key9 == 1) then
         print("клавиша9")
      end

      if (data.key10 == 1) then
         print("клавиша10")
      end

      if (data.key11 == 1) then
         print("клавиша11")
      end

      if (data.key12 == 1) then
         print("клавиша12")
      end

      if (data.key13 == 1) then
         print("клавиша13")
      end

      if (data.key14 == 1) then
         print("клавиша14")
      end

      if (data.key15 == 1) then
         print("клавиша15")
      end

      if (data.key16 == 1) then
         print("клавиша16")
      end
   end
)

Вернуться к списку датчиков