After failing to find morse code trainers that teach me in a way I can learn it, I decided to make one that works for me. This uses an older PS/2 keyboard, arduino nano and various output devices. A speaker to hear, an LED to see flashes and a LCD screen to display the code as well as my answers.
The arduino picks a random letter (no numbers yet), and displays the dots and dashes on the LCD screen, an LED and a speaker. The timing of the entire morse code is set to take less than one second to output. Then the user has one second to input the correct (or wrong) answer using the keyboard. Then the LCD displays either that the user got it correct or wrong.
Since I grew up using a keyboard, its more natural for me to type and correlate the keys to the tones. I've already noticed a increase in my responses to tones and correct letter. This project still a work in progress.
PS/2 Keyboard:
I decided to use a PS/2 keyboard for the ease of use and ability to easily be integrated with the Arduino Nano. There was already a library available in the Arduino IDE, I just needed to make the correct connections.
Pins 4 and 3 to VCC and Ground respectively
Pin 1 is the Data pin (Set as Pin 8 on the Arduino)
Pin 5 is the Clock Pin (Set as Pin 3 on the Arduino)
LCD 1602 Screen:
This screen is a standard 16x2 LCD display. It features 2 rows of 16 characters each for a total of 32 characters. The Arduino IDE has a library already available for this display.
The pinout is as follows:

Pins 1 and 2 are connected to GND and VCC Respectively
Pin 3 controls the backlight contrast and is connected to the 10K potientometer wiper and ground
Pin 4 is connected to Arduino Nano Pin 15
Pin 5 is connected to GND
Pin 6 is connected to Arduino Nano Pin 14
Pins 4-10 (Data Pin 0 - 4) are left unconnected for this application
Pines 11 - 14 are connected as follows:
- Pin 11 - Arduino Pin 10
- Pin 12 - Arduino Pin 9
- Pin 13 - Arduino Pin 8
- Pin 14 - Arduino Pin 7
Pins 15 and 16:
These control the backlight
Pin 15 is connected to VCC
Pin 16 is connected to a 330 ohm resistor to GND
Building the box
I_void(warranties)
eGuidezhan
Mike Szczys