Color OLED Adds Life to Animatronic Eyes (Bonus: Optimization!)

SAM_0294 (Small)

The internet is sullying its collective pants over these animatronic eyes, and for good reason: a tiny color OLED screen provides a moving iris…the animation and intense colors are striking, like nothing you’ve seen.

Australian maker David Boccabella’s been posting his progress to the Stan Winston School of Character Arts forums, adding features and improving performance…though he’s hit a bottleneck recently…fortunately one that I recognized and may have a solution for…

In the progress videos you can see the pupil and iris “stuttering” as the background image — a BMP image file — is re-loaded off an SD card. The muscle contraction effect of the later video (using multiple image frames) is impressive in its realism, but the slow updates put a bit of a damper on the fun.

Something I (painfully) learned while working on the NeoPixel Painter project is that SD cards have two operating modes: a high-speed 4-bit parallel mode used by most consumer devices like cameras and card readers, and a serial (SPI) mode usable by more modest devices like microcontrollers. It turns out the SPI mode is inherently speed-limited…not just by the speed of the microcontroller or the SPI bus, but that the SD card itself can only issue blocks so fast over that interface…about 500KB/second if you’re really lucky.

David’s using the potent PJRC Teensy 3.1 microcontroller along with a small Freetronics OLED. The Teensy 3.1 has half a megabyte of flash program space…that’s huge. Not enough to store all the animation frames that were on the SD card…but given the speed of this microcontroller, it’s not necessary. By doing a lot of math up-front and placing the results in the Teensy’s copious program space, it’s only necessary to store a single iris image and apply some mathematical distortion to this in real time to create the muscle contraction effect.


I didn’t have the same OLED on-hand, so this was prototyped using a small TFT LCD display that operates on similar principles…the colors aren’t as nicely saturated but it proves the idea is sound…

In the Teensy 3.1’s ‘optimized-and-overclocked’ setting, this can manage 40 frames per second. Without overclocking, still a respectable 30 frames/second. No stuttering!

This was a quick-and-dirty test and the code is an embarrassing mess, there’s still a lot of room for some space optimizations and cleaning up some of the math. But if you’re interested in seeing how it works, I’ve posted the code on Github. Halloween’s coming and the world needs more monsters!

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, or even use Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for MakeCode, CircuitPython, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Join 8,500+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – Python on Microcontrollers is here!

Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Follow Adafruit on Instagram for top secret new products, behinds the scenes and more https://www.instagram.com/adafruit/

Maker Business — Rethink Robotics closes shop. Long live collaborative robots #makerbusiness

Wearables — Cleaning is key

Electronics — Serial overkill

Biohacking — Biohacking Resources – Books, Talks and Podcasts

Python for Microcontrollers — CircuitPython @ Hackaday SuperCon #ICYMI @circuitpython @micropython @ThePSF #Python

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !

No Comments

No comments yet.

Sorry, the comment form is closed at this time.