During the a repair of an Amiga 2000 keyboard I didn’t found it very handy to use my Amiga as tester for a defect keyboard:
- During testing, to prevent damage with unplug or plugin of the keyboard, it requires power down of the Amiga.Which takes a lot of time and proceedings (the boot, shutdown etc)
- Change to damage the keyboard port of the Amiga if something was really wrong
So the idea began to take shape of we could build a simple tester.
Next to me laying was a Arduino Uno with a Multi Functional Shield laying around. And the Amiga Keyboard protocol doesn’t seem to hard to me.
Hmmm lets first see if you one else already did use an Amiga Keyboard on an Arduino.
And yes the is. The purpose of the solution in the thread, is using the Amiga keyboard on other computer with Arduino as USB adapter. I used the script provided in message #90 as basis. It is original written by Janne Lof, but I can’t find the original reference. You can find the modified Arduino sketch at :
The Arduino Uno doesn’t support using the device as an USB hid. So first get rid of the the USB code and use an Serial.print to test if it works. And then switch to use the 4x 7 segments display.
Lets connect a suitable connector for my Amiga 2000 keyboards. See AMIGA Keyboard connector pin-outs for pin-out of the other models. Due the shield already taken a bunch of pins, we need other free pins to use. Preferred some that are already available on the unused headers on the shield.
#define PIN_KLCK 6 // black (was 8) #define PIN_KDAT 5 // brown (was 9)
For testing we use serial port, after testing the serial code is disabled. In the Arduino IDE under the Tools menu is a serial monitor. In
setup make sure
Serial.begin(9600); is called. Ok that seems to work.
Now the script will be changed to:
- Show the amiga (hex) keycode on the two first digits of the display.
- On a key press the dp(=point) on the last segment will be on.
- On a key release the dp(=point) on the last segment will be turned off again.
- If an out of sync situation occurs the display show “____”.
In general it works well, but sometimes “____” or the key release doesn’t react. Lower the time of kdat low seems to improve it, but set to short, according to the protocol, some hardware will refuse to work it.
For reference it is nice to have the Amiga Keyboard codes at hand:
My Mitsumi based Amiga 2000 keyboards works fine, but the Cherry based version doesn’t. That board takes to much power from the USB 5V.
On my bucket list for further improvements:
- Joystick test
- Mouse test
- Maybe on other SPI or I2C display for more rich feedback.
- How to deal with the Cherry board (separated supply … ?)