leonardo加矩阵键盘

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个按键

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Arduino Leonardo可以通过编程实现模拟键盘的功能。通过设置相应的代码,可以将Arduino Leonardo连接到计算机,并将其识别为一个键盘设备。然后,可以通过编写代码来控制Arduino Leonardo发送键盘按键信号,从而实现模拟键盘的功能。这种方法可以用于自动化测试、游戏控制、远程控制等应用场景。 ### 回答2: Arduino Leonardo是一款基于Atmega32U4芯片的开发板,它具有模拟键盘功能。通过编程,我们可以将它变成一个USB键盘,用于模拟键盘的按键操作。 要使用Arduino Leonardo作为模拟键盘,首先需要将开发板通过USB连接到计算机。然后,我们可以通过Arduino的开发环境编写相应的代码。 在代码中,我们可以使用Leonardo的库函数来实现按键操作。例如,我们可以使用Keyboard.begin()函数来启动键盘模拟功能。然后,使用Keyboard.press()函数按下某个键,并使用Keyboard.release()函数释放相应的键。通过这些函数的组合,我们可以模拟键盘的按下和释放操作。 除了单个键的操作外,Leonardo还支持多个键的组合操作。例如,我们可以同时按下Ctrl键和A键,使用Keyboard.press()函数同时按下这两个键。然后,使用Keyboard.releaseAll()函数释放所有的键。这样,我们就可以模拟常见的键盘组合操作。 使用Arduino Leonardo作为模拟键盘的好处是它的灵活性和易用性。通过编程,我们可以自定义按键操作,例如在特定条件下自动执行某些按键操作。而且,它还支持多个键的组合操作,可以模拟更复杂的按键行为。 总之,Arduino Leonardo具有模拟键盘功能,可以通过编程实现对键盘的模拟操作。它的灵活性和易用性使得它成为模拟键盘的理想选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值