keyboard 101 matrix start...

101布局键盘,矩阵排布,主控代码

 

#include <Keypad.h>
#include "Keyboard.h"
#include <ctype.h>

const byte ROWS = 6;
const byte COLS = 22;


static byte kb101[6][22] = {
    { 27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 44, 145, 19 },
    { '`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 220, 8, 45, 36, 33, 144, 111, 104, 109 },
    { 9, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 46, 35, 34, 103, 104, 105, 107 },
    { 20, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', 222, 13, 100, 101, 102 },
    { 16, 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 16, 38, 97, 98, 99, 13 },
    { 17, 18, 32, 18, 17, 37, 40, 39, 96, 110 }
};

static byte kb104[6][22] = {
    { 27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 44, 145, 19 },
    { '`','1','2','3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 220, 8, 45, 36, 33, 144, 111, 104, 109 },
    { 9, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', 46, 35, 34, 103, 104, 105, 107 },
    { ' ','a','s','d', 'f', 'g', 'h', 'j', 'k', 'l', ';', 222, 13, 100, 101, 102 },
    { 16, 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 16, 38, 97, 98, 99, 13 },
    { 17, 91, 18, 32, 18, 255, 93, 17, 37, 40, 39, 96, 110 }
};

static byte rowPins[6] = { 9, 8, 7, 6, 5, 4 };
static byte colPins[22] = { 44, 43, 42, 41, 40, 39, 38, 37, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12 };

static char* keypadMap = makeKeymap(kb101);

static Keypad keypad = Keypad(keypadMap, rowPins, colPins, 6, 22);

static unsigned long startTime;
static const byte ledPin = 6;

void keyboardEvent(KeypadEvent key);
/**
 * @Method   setup
 * @Brief
 * @DateTime 2019-01-09T11:15:14+0800
 * @Modify   2019-01-09T11:15:14+0800
 * @Author   Anyz
 * @return   void
 */
static void setup() {
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
    keypad.addEventListener(keypadEvent);
    keypad.setHoldTime(500);
    Keyboard.begin();
    configPin();
}
/**
 * @Method   configPin
 * @Brief
 * @DateTime 2019-01-09T11:14:28+0800
 * @Modify   2019-01-09T11:14:28+0800
 * @Author   Anyz
 * @return   void
 */
static void configPin() {
    for (int i = 0; i < sizeof(rowPins); ++ i) {
        pinMode(rowPins[i], INPUT);
    }
    for (int j = 0; j < sizeof(colPins); ++ j) {
        pinMode(colPins[j], INPUT);
    }
}
/**
 * @Method   loop
 * @Brief
 * @DateTime 2019-01-09T11:14:32+0800
 * @Modify   2019-01-09T11:14:32+0800
 * @Author   Anyz
 * @return   void
 */
static void loop() {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
}
/**
 * @Method   keypadEvent
 * @Brief
 * @DateTime 2019-01-09T11:14:36+0800
 * @Modify   2019-01-09T11:14:36+0800
 * @Author   Anyz
 * @param    KeypadEvent key keyboard ascii code
 * @return   void
 */
static void keypadEvent(KeypadEvent key) {
    switch (keypad.getState()){
    case PRESSED:
        Keyboard.press(key);
        break;
    case RELEASED:
        Keyboard.release(key);
        break;
    case HOLD:
        Keyboard.press(key);
        delay(33);
        Keyboard.release(key);
        break;
    }
}

目前试验了2x2,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值