Keep your button-pushing, knob-twiddling, switch-flipping fingers
out of the equipment!
-- often heard from my dad
Unlike the equipment Ed Morin was working on, the Control Shield (CS)
won't catch fire or electrocute the unwary.
So, it allows (nay, requires!) experimentation with physical controls.
More generally, the CS allows blind or visually-impaired users
to program an Arduino in a convenient, flexible, and safe fashion.
No big magic here; just some simple design decisions:
- The shield is basically "plug and play".
- All controls provide tactile feedback.
- Audio is used to indicate most results.
- No host computer is needed for operation.
The CS starts with a SparkFun Joystick Shield Kit
adding a rotary encoder and four potentiometers.
Audio output and text displays tell the user what's going on.
function can emit a beep when it starts up.
function can emit sounds (e.g., clicks, tones)
to indicate control activity, settings, etc.
Between these, the user should be able to:
- tell that the Arduino is running
- track current modes and settings
- monitor the results of a sketch
- interact with a running sketch
To encourage experimentation, the CS adds several items to the Joystick Shield.
A pair of (stereo) phone jacks support analog, audio, and digital I/O.
We also add several additional controls (e.g., potentiometers, rotary encoder).
The output jack can provide audio output to a speaker or headphones.
Alternatively, it can be used to provide signals to another device.
In fact, one output channel can be used for audio
while the other is emitting analog levels to a servo motor.
The input jack can be used to sample external voltage sources
or low-frequency audio signals (1 V P-P).
By default, it is connected to the same pair
of internal, PWM
-enabled digital output pins
which power the output jack.
The rotary encoder
can be used to implement menu systems,
simulate a rotary switch
In short, it's a very flexible, computer-friendly type of control.
We also added two pairs of potentiometers,
to provide settable analog voltages and adjust PWM time constants.
The initial exercises (see below) only use the controls
to generate audio for the output jack.
Later, we'll get to the input jack, internal routing, etc.
Status & Goals
My friend Isaac Wingfield designed and fabricated (thanks!)
a couple of Version 0.1 Control Shields.
I'm playing with one; my friend Amanda is trying out the other.
With only verbal guidance, she was able to set up the shield,
then download and run a set of sketches. So, we have lift-off!
I've written several sketches that exercise various aspects of the shield.
Over the next few months, Amanda and I will be writing more sketches,
building up a "starter kit" for our prospective user community.
Meanwhile, I'll be looking into add-on controls and devices (e.g., servo motors)
that would make the shield more interesting.
At some point, we should have a design for the Version 0.2 Control Shield.
This would be a custom PCB
, using most of the same components
but spreading things out and improving the accessibility of connections.
Like the Joystick Shield, this will be an open source hardware design.
Interested vendors (etc) are encouraged to get in touch!
This shield should be versatile enough to allow quite a variety of programming exercises.
These pages should give you some ideas to get a start...
The Control Shield covers most of the Uno's top surface,
providing easy access to a variety of controls and connectors.
See the Control Shield Layout
pages for details.
Because our use of the Uno's pins has been hacked, YMMV
Control Shield Pin Usage
describes the default kit and our hacks,
but it ignores unused pin modes and explains very little.
So, keep the Uno Pin Usage
page handy as a reference!
This wiki page is maintained by Rich Morin
an independent consultant specializing in software design, development, and documentation.
Please feel free to email
comments, inquiries, suggestions, etc!