PS2keyboard库函数.available()总是返回flase,什么原因
本帖最后由 Gwei 于 2015-3-25 11:16 编辑我在模仿freebuf上的http://bluereader.org/article/10965311文章做一个硬件键盘记录。
我的连接是正确的;
arduino IDE版本是1.6.1;
键盘是一个PS2接口;
板子型号是UNO;
PS2Keyboard下载最新的2.4版本http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
用IDE打开库文件里的example/Simple_Test.pde,编译下载到板子上,发现keyboard.available()总是返回false。
/*PS2Keyboard library example
PS2Keyboard now requries both pins specified for begin()
keyboard.begin(data_pin, irq_pin);
Valid irq pins:
Arduino Uno:2, 3
Arduino Due:All pins, except 13 (LED)
Arduino Mega: 2, 3, 18, 19, 20, 21
Teensy 2.0: All pins, except 13 (LED)
Teensy 2.0: 5, 6, 7, 8
Teensy 1.0: 0, 1, 2, 3, 4, 6, 7, 16
Teensy++ 2.0: 0, 1, 2, 3, 18, 19, 36, 37
Teensy++ 1.0: 0, 1, 2, 3, 18, 19, 36, 37
Sanguino: 2, 10, 11
for more information you can read the original wiki in arduino.cc
at http://www.arduino.cc/playground/Main/PS2Keyboard
or http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
Like the Original library and example this is under LGPL license.
Modified by [email protected] on 2010-03-22
Modified by Paul Stoffregen <[email protected]> June 2010
*/
#include <PS2Keyboard.h>
const int DataPin = 8;
const int IRQpin =5;
PS2Keyboard keyboard;
void setup() {
delay(1000);
keyboard.begin(DataPin, IRQpin);
Serial.begin(9600);
Serial.println("Keyboard Test:");
}
void loop() {
if (keyboard.available()) {
// read the next key
char c = keyboard.read();
// check for some of the special keys
if (c == PS2_ENTER) {
Serial.println();
} else if (c == PS2_TAB) {
Serial.print("");
} else if (c == PS2_ESC) {
Serial.print("");
} else if (c == PS2_PAGEDOWN) {
Serial.print("");
} else if (c == PS2_PAGEUP) {
Serial.print("");
} else if (c == PS2_LEFTARROW) {
Serial.print("");
} else if (c == PS2_RIGHTARROW) {
Serial.print("");
} else if (c == PS2_UPARROW) {
Serial.print("");
} else if (c == PS2_DOWNARROW) {
Serial.print("");
} else if (c == PS2_DELETE) {
Serial.print("");
} else {
// otherwise, just print all normal characters
Serial.print(c);
}
}
}
有没有人跟我一样呀!!!! 建议你用老一点的ide试试最新的这个可能有点问题
另外检查连线是不是搞反了
我之前做过
http://www.lab-z.com/ps2a/
制作一个PS2键盘记录器 zoologist 发表于 2015-3-25 11:44 static/image/common/back.gif
建议你用老一点的ide试试最新的这个可能有点问题
另外检查连线是不是搞反了
hi~ zoologist 代码可以编译通过,应该不是IDE的问题吧?刚才仔细检查了一下我的接口和您的blog中的表示是相符的。我想问一个细节,就是我给键盘通电的一瞬间,键盘的提示灯会亮一下,之后就没反映了,这是可能是键盘原因吗?我用的是清华同方的,10年前的货。 今天下午调试了一下,目前发现是
attachInterrupt(irq_num, ps2interrupt, FALLING);创建的中断有问题!!
UNO版不能接到有频率的时序信号!! Gwei 发表于 2015-3-25 17:05 static/image/common/back.gif
今天下午调试了一下,目前发现是
attachInterrupt(irq_num, ps2interrupt, FALLING);创建的中断有问题!! ...
什么意思? zoologist 发表于 2015-3-25 21:09 static/image/common/back.gif
什么意思?
应该是我接错线,才错的,这个应该是申请中断的意思,从high降到low就会触发中断。谢谢了 朋友!! zoologist 发表于 2015-3-25 21:09 static/image/common/back.gif
什么意思?
应该是我接错线,才错的,这个应该是申请中断的意思,从high降到low就会触发中断。谢谢了 朋友!!
页:
[1]