http://nxt.typepad.jp/robojoy/2008/11/2-4707.html
PS/2キーボードをNXTインテリジェントブロックに接続する方法を紹介します。
まだ完成度は高くありません。
回路としては、
「NicoSensor」にmini-DIN6pinメスコネクタを付けるだけです。
NXTのVcc(約4.6V)からキーボードの電源を取ります。若干電圧が足りませんが、大目に見てください。
NicoSensorを入力ポート1につなぎました。
キーボードが大きく見えます。
//i2c keyboard(original sensor)
#include "NXCDefs.h"
#define IN_I2C IN_1
#define INCNT 1byte writebuf[] = {0x02, 0x42 };
byte readbuf[] = {0,0};task main()
{
int x = 0;
int y = 56;
int readcnt = INCNT;
string tmpstr;ClearScreen();
SetSensorLowspeed (IN_I2C);
while (true)
{
I2CBytes(IN_I2C, writebuf, readcnt, readbuf);
if(readbuf[0] < 32){
Wait(50);
}else{
tmpstr = ByteArrayToStr(readbuf);
TextOut(x,y,tmpstr);
x += 7;
if(x > 96){
x = 0;
y -= 7;
}
}
}
}
、、、、キーを読み取ってキャラクタコードを画面に表示します。NXT内のファイルに入力データを保存できたりすると面白いと思います。
↓マイコン側のファームウェアです。まだファームウェアにミスがあるみたいで反応が良くありません。暇を見て直します。
i2c_keyboard.zipをダウンロード
(2008/11/28追記)
キーボードの受信バッファをリングバッファにしてみました。それでもたまに転送ミスが起きます。今後の課題です。