20140324 (M) ASETNIOP Keyboard

"How do you cook an elephant?"

Several people tried to teach me programming in college and I just wasn't ready to learn it.  In fact, at the time I wanted nothing to do with programming.  My opinion was that if something needed to be programmed then it should be left to the programmers, I was a hardware guy.  Naturally, my first step on a career path was primarily program and I had my trial by fire.  Not only was I expected to be able to program but I was supposed to do it a lot.

I give credit to my college professor whose name escapes me.  I would recognize his beard though. He stands out in my mind because of an ability bordering on a super power.  He tutored me without making me feel dumb.  Not once.  This is amazing because I couldn't get two rules about syntax into my head at the same time.  It was a problem.  But, he helped me and passed my assignment so long as I proved to him that I could grasp the concepts of programming.

My graduation was in 2009 and now I enjoy programming enough to do it in my spare time.  Thank you professor...beard guy.

The reason I bring him up is because he asked the question, "How do you cook an elephant?"  The answer is to break it up into manageable pieces.  While I was thinking about the complexity of my current code I started to see all the holes.  And thought about how I kept building up and up without a base.  There were a dozen places for my code to break and if any one of them was broken the whole thing would fail.

The code I had might have some have some useful snippets for later but the best way to move forward is a tactical retreat in order to attack it logically.  My "To Do" lists at the end of the day have just said "Program, test & debug."  That was a placeholder.  Now it's time to make a list of what actually need to be done and in what order.

Enough background.

Small pill containers were purchased from the Ax Man store at Snelling & University.  The cases were chosen because they were small but large enough to fit all the necessary components.  Since all the components inside are soldered without having to pass through the enclosure the enclosure can be swapped out easily at any time.

At the hack space a Dremel tool with a cut-off wheel was used to cut a hole for the USB tab to come through the pill case.  Holes were drilled in the perpendicular sides of the enclosure for the TRRS sockets.

Old phone wire was found and used to solder the components together.  A lot of time was spent trimming the phone wire to manageable lengths.  The insulation in the wires tends to be stiff so short wires become difficult to wrangle especially when two wires are soldered to a single terminal while being held in place by hand.

Some coding was done but the compounding issues of untested code and unfamiliar libraries made it clear that a fresh start is needed.  A ten point list was made which will facilitate the development as it uses a progressive accumulation of algorithms to build off one another.  The first step is to make the DigiSpark work as an emulated USB keyboard.  This is for debugging purposes since the DigiSpark doesn’t support serial ports the way most other (previous models of) Arduinos do.  This will be a text feedback and eventually be useful when it becomes a full-fledged “keyboard.”

To do:
• Follow outlined programming agenda
• Sand wood blocks
• Glue switches in place

 Journal page 1

 Journal page 2

 Programming agenda with plenty of space between items

CVS pill cases were a suitable size for the prototype

The pill case cut and drilled with the components inside

The pill case wired up

Pin assignment for the 3.5mm TRRS plug on a tiny scrap of a paper bag
Dremel cutoff wheel