Scope creep
is something I had only seen at work. My boss would get a project and
the client would gradually slip in a new feature here and a neat gizmo there or
try to swap out a simple sensor for a more complex one. A project rarely
turned out as expected. Once I recognized scope creep in my own
projects I saw it EVERYWHERE. I could
start out with a color changing robot and by the end it was big enough to have
its own school district. It is natural
to want to improve on a project but those “improvements” threaten the
likelihood of success or even completion.
A
while ago I made a controller for tattoo machines that used a µcontroller to
set the machine speed as opposed to raising and lowering voltage like a
traditional tattoo machine power supply.
Then I wanted to add some switches, then I wanted to do a fancy trick
with potentiometers, then I put it in a fancy enclosure, then I put extra
terminals on it, then I got a bigger-than-necessary SSR, then I wanted to give
it an infrared emitter. By a miracle of
willpower I finished it.
Tattoo machine controller
These
guys took the opposite approach.
Their device does one thing. It’s
a simple enough concept with a neat result.
For myself, I want to find a middle ground where my projects have a few
neat gizmos but are still elegant.
Enough
background.
----------
The "expander" example included with the
Digispark distribution of the Arduino software only shows how to use the I/O expander
as an output. In this case to give a “Knight
Rider” or “Cylon” effect with LEDs.
The downloaded libraries rely on the “wires”
library which only works with the traditional line of Arduinos not the ATTiny85
used in this project. Some people have
reported they cobbled together a working model but it seems like putting a
square peg in a DB-9 port.
At first it was hypothesized that the I²C pins were
interfering with the USB communication since the computer gave a “Device not
recognized” error each time. This was
not the case. The USB uses pins 3&4
while the I²C is done on pins 0 & 2.
Pin 1 is the onboard LED. To
leverage the onboard LED the NeoPixel line has been moved to pin 5. The schematic has been updated to show this.
The schematics now have labels for each of the
Digispark pins which shows below it.
Pages 6-20 of the MCP23008 datasheet
have been printed to review the I²C protocol in hopes of bypassing the need for
another library. The “TinyWireM” library
should be all that is necessary. A
serial I²C LCD may be implemented after the first prototype is finished. It would only require a TRRS splitter on
either of the existing ports.
To do:
• Glue switch boards in place
• Study I²C protocol
• Follow outlined program agenda
Journal page 1
Journal page 2
Updated schematic
Comments
Post a Comment