Control Shield

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.

Audio Output

The setup() function can emit a beep when it starts up. The loop() 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 or potentiometer, etc. 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!

Breakout Pages


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, Photos, and Wiring pages for details.

Pin Usage

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!

Topic revision: r17 - 28 Nov 2016, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email