《Arduino虚拟键盘与PS/2设备连接的实现与应用》
立即解锁
发布时间: 2025-08-26 00:22:33 阅读量: 8 订阅数: 42 


实用Arduino:开源硬件的酷炫项目
### 《Arduino虚拟键盘与PS/2设备连接的实现与应用》
#### 1. 虚拟USB键盘的实现
虚拟USB键盘示例程序可模拟USB键盘,读取四个数字输入线的值,当任一输入被拉低时向主机发送字符。
##### 1.1 准备UsbKeyboard库
- 该程序依赖Philip Lindsay创建的UsbKeyboard Arduino库,此库整合了Objective Development创建的通用USB库。
- 可从code.rancidbacon.com/ProjectLogArduinoUSB下载该库,下载的是名为arduinousb_release_002.tar.gz的压缩包。
- 由于该库在Arduino 0017或0018下无法编译,需下载并安装Arduino 0016版本(可从Arduino官网获取)。
- 解压下载的压缩包,找到libraries/UsbKeyboard目录。对于Arduino 0017及更高版本,可将库安装在草图本的libraries目录中,但Arduino 0016不支持此方式,需将UsbKeyboard目录移至Arduino 0016实际安装目录下的libraries目录中。
##### 1.2 编译和上传草图
草图的主要代码如下:
```cpp
#include "UsbKeyboard.h"
#define BUTTON_A 8
#define BUTTON_B 9
#define BUTTON_MSG 10
#define BUTTON_ENTER 11
byte ledPin = 13;
void setup()
{
pinMode (ledPin, OUTPUT);
digitalWrite (ledPin, HIGH);
pinMode (BUTTON_A, INPUT);
pinMode (BUTTON_B, INPUT);
pinMode (BUTTON_MSG, INPUT);
pinMode (BUTTON_ENTER, INPUT);
digitalWrite (BUTTON_A, HIGH);
digitalWrite (BUTTON_B, HIGH);
digitalWrite (BUTTON_MSG, HIGH);
digitalWrite (BUTTON_ENTER, HIGH);
TIMSK0&=!(1<<TOIE0);
cli();
usbDeviceDisconnect();
delayMs(250);
usbDeviceConnect();
sei();
}
void loop()
{
UsbKeyboard.update();
if (digitalRead(BUTTON_A) == LOW) {
UsbKeyboard.sendKeyStroke(KEY_A);
digitalWrite(ledPin, !digitalRead(ledPin));
}
if (digitalRead(BUTTON_B) == LOW) {
UsbKeyboard.sendKeyStroke(KEY_B);
digitalWrite(ledPin, !digitalRead(ledPin));
}
if (digitalRead(BUTTON_MSG) == LOW) {
UsbKeyboard.sendKeyStroke(KEY_H, MOD_SHIFT_LEFT);
UsbKeyboard.sendKeyStroke(KEY_E);
UsbKeyboard.sendKeyStroke(KEY_L);
UsbKeyboard.sendKeyStroke(KEY_L);
UsbKeyboard.sendKeyStroke(KEY_O);
UsbKeyboard.sendKeyStroke(KEY_SPACE);
UsbKeyboard.sendKeyStroke(KEY_W, MOD_SHIFT_LEFT);
UsbKeyboard.sendKeyStroke(KEY_O);
UsbKeyboard.sendKeyStroke(KEY_R);
UsbKeyboard.sen
```
0
0
复制全文
相关推荐









