leonardo采用了34U4,相比于328p来说将usb整合进入了mcu中,单价也略高
共有这几个函数
Keyboard.print();
Keyboard.println();
Keyboard.release();
Keyboard.releaseAll();
Keyboard.begin();
Keyboard.end();
我们可以通过使用矩阵键盘函数和物理矩阵键盘输入字符并识别,然后使用函数Keyboard.print()来反映到PC上
例如:Keyboard.print(“s”);
Keyboard.print(steel);//这里的steel是一个已经被定义的值
除了abc012这类的单个字符还有些其他的按键:
按键名称
对应十六进制
对应的十进制
KEY_LEFT_CTRL
0x80
128
KEY_LEFT_SHIFT
0x81
129
KEY_LEFT_ALT
0x82
130
KEY_LEFT_GUI
0x83
131
KEY_RIGHT_CTRL
0x84
132
KEY_RIGHT_SHIFT
0x85
133
KEY_RIGHT_ALT
0x86
134
KEY_RIGHT_GUI
0x87
135
KEY_UP_ARROW
0xDA
218
KEY_DOWN_ARROW
0xD9
217
KEY_LEFT_ARROW
0xD8
216
KEY_RIGHT_ARROW
0xD7
215
KEY_BACKSPACE
0xB2
178
KEY_TAB
0xB3
179
KEY_RETURN
0xB0
176
KEY_ESC
0xB1
177
KEY_INSERT
0xD1
209
KEY_DELETE
0xD4
212
KEY_PAGE_UP
0xD3
211
KEY_PAGE_DOWN
0xD6
214
KEY_HOME
0xD2
210
KEY_END
0xD5
213
KEY_CAPS_LOCK
0xC1
193
KEY_F1
0xC2
194
KEY_F2
0xC3
195
KEY_F3
0xC4
196
KEY_F4
0xC5
197
KEY_F5
0xC6
198
KEY_F6
0xC7
199
KEY_F7
0xC8
200
KEY_F8
0xC9
201
KEY_F9
0xCA
202
KEY_F10
0xCB
203
KEY_F11
0xCC
204
KEY_F12
0xCD
205
更多的按键对应数值请查看ASCII码表: http://www.asciitable.com/
这些按键的用法
例子:
const char ctrlKey = KEY_LEFT_GUI;
void setup()
{
Keyboard.print(ctrlKey);
}
这样就如同按下了左ctrl按键
如果要组合键比如说ctrl+C则
Keyboard.press(ctrlKey);
Keyboard.press(‘C’);
delay(10);
Keyboard.releaseAll();//映射press函数的所有按键到PC
示例代码:
//基于arduino 莱昂纳多
//the die ver is 1.6.7
//this suite include a serial keyboard
#include "Keypad.h"
#include "Keyboard.h"
int counter = 1;
const byte ROWS = 6; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'H', '0', 'L', 'L'},
{'O', 'C', 'K', 'E'},
{'*', '0', 13, ' '}//13 is enter button
};
const char String1[] = {"sh"};//演示用
byte rowPins[ROWS] = {4, 5, 6, 7, 8, 9}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {10, 16, 14, 15}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);//矩阵实体键盘的初始化函数
void setup() {
Serial.begin(9600);
}
void loop() {
char customKey = customKeypad.getKey();
int k, i, j;
if (customKey) {
Serial.print(customKey);
Keyboard.print(customKey);
if (customKey == ' ')
{ for (k = 0; k < 15; k++)
{
for (j = 0; j < 5; j++)
{
Keyboard.println(String1);
delay(10);
for(i=0;i
Keyboard.println(".");
Keyboard.println(counter);
counter ++;
delay(10);
if (counter == 6)
counter = 1;
}
}
}
if(customKey =='*')
Keyboard.println(String2);
}
}
关于机械键盘部分:
这里使用一块切割下的PCB和和黑轴以及KBC的白色按键
利用杜邦线直接连接到Arduino 莱昂纳多pro micro 上
基本电路就是矩阵键盘的常用电路,因为十分常见就不附带贴图
有兴趣可以尝试一下n线达到nxn键盘的扫描电路,这样利用能达到最多18x18个按键