Skip to content

A utilty to test an Amiga (A500) keyboard using an Arduino Uno

License

Notifications You must be signed in to change notification settings

neildavis/amiga_keyboard_tester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Amiga A500 Keyboard Tester (Arduino Uno)

Overview

A small utility to test an Amiga A500 keyboard using an Arduino Uno with serial output over USB. The serial output will display all key scan codes (up/down) and 'special' control codes in both hexadecimal and human readable form. The 'Caps Lock' LED indicator on the keyboard will also be reflected by the Uno's on board LED.

Based on information available from the Amiga Hardware Reference Manual and code by olaf. Unlike that code, this project does not translate amiga keys to USB HID for PC keyboard compatibility. The Uno's ATmega328 MCU lacks the required on-chip support for USB that the Leonardo's ATmega32u4 has. Therefore this utility is useful only as an external tool for testing Amiga keyboards. Still I found this useful to test a keyboard MCU replacement build prior to plugging into a working Amiga if you don't have a Leonardo board to re-purpose one of the many existing USB HID adapter sketches.

Hardware Connections

Make connections from the A500 Keyboard connector to the Arduino Uno as follows: Note the position of the 'key' which is the pin without a wire in the keyboard Molex connector.

KB Conn' Pin Purpose Uno Pin
1 KB_CLK D8
2 KB_DAT D9
3 KB_RST D10
4 Vcc 5v
5 NC (Key) -
6 GND GND
7 LED1 -
8 LED2 -

Connect your Arduino UNO to your PC using the USB cable as normal.

Software Environment

This tool was developed using the PlatformIO extension for Visual Studio Code (VScode). It will also work as an Arduino IDE sketch by renaming main.cpp to e.g. main.ino

Build and upload to your Uno over USB using the PlatformIO IDE (or Arduino IDE as a sketch). Alternatively, a prebuilt binary firmware is available if you wish to flash directly using e.g. avrdude in which case I'm going to assume that you know what you are doing :)

Then use the IDE "serial monitor" to view the output. Alternatively use your choice of terminal emulator software. By default the code is setup to use 115200 baud (8 data bits, no parity, 1 stop bit) The baud rate can be changed in the code on this line:

// Serial monitor baud rate
#define SERIAL_BAUD 115200