My name is Greg Winn I am a web developer, specializing in web application development. Take a look at some of my projects, then drop me a line.
View older articles.
Most of my projects can be followed on Github (@gregwinn)
This is a wrapper for the Lnkdto API. This gem gives to access to both single url and batch url requests.
This Ruby gem named Ystock will pull stock information such as price, volume, and change from Yahoo! & Google Finance.
Continuing my latest project (Rebuilding a TI-99/4A) I have decided to start with the keyboard. The input seemed like it was the most logical place to start, but also the most challenging. I started by taking the cover off of the box and discovering that the whole computer was only three separate parts! The power supply sits near the front of the computer holding the red LED that turns on when the system is powered on. Next is the primary processing board or the motherboard, covered by metal housing on both sides. The final board is, well the keyboard, it’s just simply a PCB with the key switches soldered on. The keyboard PCB traces down to the 15 pin ribbon that connects to the motherboard. This ribbon is what I will be using to figure out the keys that are laid out in a 7x8 grid.
I started by finding information on the TI-99/4A keyboard and someone who has already reversed engineered it for Arduino! This bit of information saved me a ton of time, because my plan was to watch serial outputs to map the keys to values.
Using an Arduino Uno with a ATMega 328p I was unable to use the ‘Keyboard’ library for Arduino. After a quick switch to an Arduino Leonardo, that solved the issue of using the Keyboard Lib.
Below is the matrix diagram used to map the keys:
After I wrapped my mind around how this matrix worked I needed to connect the 15 pin ribbon to 15 Arduino Leo pins. Before I did that I need 15 10K Ohm resistors to act as pulldowns, to reduce noise. Using the matrix above i needed to map the matrix to the 15 arduino pins.
#12 #13 #14 #15 #9 #8 #6 #5 = . , M N / #4 spac L K J H ; #1 entr O I U Y P #2 9 8 7 6 0 #7 fctn 2 3 4 5 1 lock #3 shft S D F G A #10 ctrl W E R T Q #11 X C V B Z
In my next update I will explain how I am checking for a keypress and translating that into an actual character. I will also cover modifiers and the Bounce and Bounce2 libraries.