Electric Bugle: Digital Trainer

A trainer is a board built for teaching electronics, incorporating several components that can be connected with wires and (usually) a broadboard on which additional components can be added.

Our trainer — the Laptop Digital Trainer — is a simple model which is quite ample to our purposes. It contains a number of components, each accessed via a column of five holes labeled Jx. All holes in a particular column are wired together internally, so you can insert a wire into any of them and get the same effect.

J1: You can ignore this connection. For the record, when J1 has a low voltage, the hexademical display will be frozen at the last values seen in J3 to J6 when J1 had a high voltage. That is, the inputs in J3 to J6 are latched when J1 is low. If J1 is left unconnected, its value is pulled to one, and so the hexadecimal display always displays the current value seen in J3 to J6.
J2: You can ignore this connection, too. When J2 has a low voltage, the hexademical display will be disabled, displaying nothing. If left unconnected, J2's value is pulled to one, and so the hexadecimal display shows its current value.
J3: Controls the eights' bit of the number displayed in the hexadecimal display. When left unconnected, the trainer assumes the eights' bit is one, so you probably want to make sure it's connected somehow.
J4: Controls the fours' bit of the number displayed in the hexadecimal display. When left unconnected, the trainer assumes the eights' bit is one, so you probably want to make sure it's connected somehow.
J5: Controls the twos' bit of the number displayed in the hexadecimal display. When left unconnected, the trainer assumes the eights' bit is one, so you probably want to make sure it's connected somehow.
J6: Controls the ones' bit of the number displayed in the hexadecimal display. When left unconnected, the trainer assumes the eights' bit is one, so you probably want to make sure it's connected somehow.
J7: When the user pushes up the first switch at the trainer's bottom left corner, J7 is high, and it is low when the switch is pointing down.
J8: When the user pushes up the second switch at the trainer's bottom left corner, J8 is high, and it is low when the switch is pointing down.
J9: When the user pushes up the third switch at the trainer's bottom left corner, J9 is high, and it is low when the switch is pointing down.
J10: When the user pushes up the fourth switch at the trainer's bottom left corner, J10 is high, and it is low when the switch is pointing down.
J11: When one or unconnected, the leftmost LED at the top left corner of the trainer will be lit.
J12: When one or unconnected, the second LED at the top left corner of the trainer will be lit.
J13: When one or unconnected, the third LED at the top left corner of the trainer will be lit.
J14: When one or unconnected, the fourth LED at the top left corner of the trainer will be lit.
J15: This is constant high voltage (+5 volts).
J16: This is constant low voltage (ground).
J17: This is the slow clock, which cycles between low and high voltage at a rate of roughly 1 to 3 times a second. The clock's rate can be controlled using the lower left dial to the right of the breadboard. (Counterclockwise is faster.) The upper left dial controls this clock's duty cycle — that is, the fraction of time in each cycle spent at the high voltage. (Counterclockwise means a higher fraction.)
J18: This is the fast clock, which cycles between low and high voltage at a rate of roughly 1 to 3 thousand times a second. The clock's rate can be controlled using the lower right dial to the right of the breadboard. (Counterclockwise is faster.) The upper left right controls this clock's duty cycle — that is, the fraction of time in each cycle spent at the high voltage. (Counterclockwise means a higher fraction.)
J19: When the user presses the push button, J19 will be high, and it is low when the push button is up.
J20: When the user presses the push button, J20 will be low, and it is high when the push button is up.