The last time I wrote about my Arduino was in January of this year; it's been just about that long since I've even had a chance to play around with it. But microprocessors have never been far from my mind. In fact, I've taken on a research assistant this semester to take a look at if, when, and how theatres and theatre technicians are utilizing microprocessors and microelectronics in scenery and props. I was first turned on to this when Gareth Conners (of Creative Conners) came to campus to talk about his motion control system, which is built around a microprocessor signalling a VFD to control a motor; since then, I've not been able to shake the intuition that if the industry is not currently utilizing microelectronics in many aspects of production, it should be.

I like to dream up projects that help me understand how things work--the projects may not always have direct application to theatre, but the concepts I explore when working on them usually do. One of the things that I couldn't wrap my brain around was all these Arduino projects that have multiple outputs doing multiple things--way more outputs than I know my Arduino has. So I set myself a project: see if I could design a digital clock display; each digit would be a matrix of 15 individual LEDs, for a total 62 LEDs (60 for the digits, and 2 for a colon). And then I started reading.

Turns out, the solution is pretty simple: shift registers. I had read about shift registers before, but didn't really understand how they work. But--as is often the case--I found a plethora of sites, blogs, and videos online created by helpful tinkerers just dying to share with me how they work. And it's actually quite simple, in concept. Shift registers are integrated circuits; some can be used essentially as serial-to-parallel data converters. In other words, you can send a byte (8 bits) of serial data out of one pin of your Arduino; the shift register will store those 8 bits, assigning one bit to each of its eight output pins. Then, when sent a single pulse on a separate pin, it turn on (or off) each output pin based on those bits of data. And, voila! One data pin controlling 8!

Using this method, each digit of 15 LEDs will require two shift registers, but by connecting the input pin of the second register to the serial output pin of the first, I can control both using the same serial stream--a single pin on the Arduino. Four digits, four serial data pins. Each digit will need its own pair of control pins, however, to tell the shift registers to load new data and to output new data (changing the display of digits). So, to control four digits, I'll need twelve pins to control four digits, and two pins for the colon, provided I just leave it lit up. I need 14 pins, and my Arduino Uno has, conveniently, 14 pins.

But what if I wanted that all-time cool digital clock effect--the one you can't live without: having the colon strobe every second? I would need three pins: a serial data pin for the LEDs and two pulse pins--15 to my existing 14 pins. Unless...what if the pulse pins for all four digits were on a shift register as well? You could condense those eight pins down to three (data and two pulses).

I'm sure there are better ways to do a project like this; as I said at the beginning, my goal was to develop a project to help me understand shift registers. But it also becomes a project that I can utilize in a future class not only to understand shift registers, but to demonstrate basic data communication principles--like bits and bytes (each digit takes two bytes of data to display), binary to hexadecimal conversions (as it appears to be easier to encode the data to the Arduino in hex than binary); serial communication; parallel communication; latches and clock timing--to students.

I know there are readers significantly more experienced in this kind of work than I am--I want to hear from you! Are you using microelectronics in your scenery or props? Do you want to? Send me a note so I can include you in our research! And for those engineering friends of mine out there--you know who you are!--tell me what I'm doing wrong with this project, and how to do it better!

Views: 766

Comment

You need to be a member of TheatreFace to add comments!

Join TheatreFace

Comment by Rich Dionne on February 18, 2013 at 8:12am

Tristan,

This sounds very, very cool. Can't wait to see photos!

Comment by Tristan Decker on February 18, 2013 at 8:10am

While the original post is a little old, I wanted to put my .02 in... Here at TCU, we're producing No, No, Nanette. It calls for a vacuum cleaner with a mind of its own. I'm building an RC/Arduino hybrid that will use the Arduino to decode RC servo signals to operate its various effects (breathing, lights, and a poof of smoke). Currently the drive motors will be directly controlled by the R/C signal, but I may switch them over to the Arduino as well depending on how development pans out... I'll post pictures as the work comes along. Parts start arriving this week...

Comment by Rich Dionne on October 30, 2012 at 12:22pm

Robyn, this is a really cool project. Thanks for sharing!

Comment by Robyn Ayles on October 30, 2012 at 11:55am

Sure. I teach at Mount Royal University in Calgary. The costumes were designed by Angela Dale for the Calgary Stampede Grandstand Show.

Here's the drawing for one of the hats. It was run on a 9 volt battery using an Arduino Uno and a custom lol shield. It contained 126 individually wired LEDS.

Here's the inside of the first one that we did, using a commercially available lol shield.

Not a very pretty sight, and when we tried to address the leds it was totally random and intertwined due to our novice soldering technique. We got better. A lot better, but the real saviors for us were the Solarbotics guy who found this project really intriguing and designed us the custom lol shields. We also received our shipment of rainbow ribbon cable which made our lives easier as well.

This is the custom lol shield: A slightly bigger footprint; about half again the size of the arduino uno. It's laid out in a 9X14 grid, which allowed us to plug in 9 strips of 28 wire ribbon cable (each one controls 14 leds).

Here's the lol shield, on the arduino, ready to have the ribbon cable plugged in.

And this is how much tidier the interior of the hats were... not to mention the fact that this method actually worked!!

The hats were made out of fosshape and covered with stretch fabric that had little reflective mylar squares on it, so the fabric reflected the leds. We used our trusty soldering irons to melt holes in the fosshape and pop the super bright leds through.

I have some video of the trials, but can't really post it here it seems. Here's a picture of one of the young dancers. It was actually taken by a Herald photographer, not one of the build crew.

This was the most complex hat that we did. Most of the others ran with and Ardweeny, and only had 15 to 18 Led's.

I could go on... but that's probably enough for one post, don't you think?

Comment by Rich Dionne on October 27, 2012 at 11:52am
Robyn, that sounds like an awesome project, and I'd love to see photos! Where was this? Would you be willing to talk to a student who is researching microcontrollers in theatre?
Comment by Robyn Ayles on October 26, 2012 at 3:33pm

We spent about 2 months last spring/summer building arduino controlled LED enhanced costumes that varied from 15 super brights tin a headdress to a tutu/pumpkin style skirt that involved 2 arduino unos running in sync... well more or less in sync. Our favorite discovery was the lol (lots of led) shield that allowed us to use a matrix of 9x14 to control 126 leds individually. Our first shot at soldering to the lol board was a huge disaster (hadn't heard of charlieplexing before... wish I was still that innocent) We talked to our local aurduino geeks at Solarbotics (http://www.solarbotics.com/) an they created a custom lol board with a lightly bigger footprint that allowed us to use a plug. We controlled our LEDs with ribbon cable (the rainbow stuff was worth the special order time)... wired each LED individually, but then crimped the ribbon cable and plugged them onto the custom lol board in 14 groups of 9. Clear as mud? I have pictures if you are interested.

Comment by Rich Dionne on October 1, 2012 at 10:31am

My engineer friend Tim sent this response:

I've become fond of using i2c controlled parts to add extra ports without tying up lots of pins. The MCP23017 is an i2c controlled 16 input/output port expander. Eight of them can be used on a single i2c bus to give you 128 outputs. The best part is that there is an Arduino driver library already written for this part. https://www.adafruit.com/products/732

Comment by Rich Dionne on October 1, 2012 at 8:26am

You know, Andrew, I have no idea why I was thinking two pins for the colon, except that I was doped up on cold medicine when I wrote this. :)


Thanks!

Comment by Andrew J Welch on October 1, 2012 at 8:17am

Oh, and BTW great article!! :-)

Comment by Andrew J Welch on October 1, 2012 at 8:16am

Only thing that jumps screaming into mind is why you used two pins for the colon. One pin driving a gate (generally an inverter) is enough to get LEDs lit, output of inverter goes low, drives LED through limiting resistor from +ve rail. Just pick an inverter with enough current sink (or use small LEDs!)

Theatreface is the networking site for professional, educational and community theatre brought to you by Stage Directions Magazine.

Groups

Subscribe to Stage Directions

Start Your FREE Subscription to Stage Directions Today!

SD covers everything from backstage to box office--performance to production and is filled with practical tips and information you need to stay on top of theatre trends.

Start getting your own copy today!

© 2015   Created by Stage Directions.

Badges  |  Report an Issue  |  Terms of Service