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.

Eye-Diagram

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!

[contextly_auto_sidebar id=”ouE8mkPlT2Co8Oq5d6BkFMurTsaz4jUU”]


Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7:30pm ET! To join, head over to YouTube and check out the show’s live chat and our Discord!

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

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

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — New Products 11/15/2024 Featuring Adafruit bq25185 USB / DC / Solar Charger with 3.3V Buck Board! (Video)

Python for Microcontrollers – Adafruit Daily — Python on Microcontrollers Newsletter: A New Arduino MicroPython Package Manager, How-Tos and Much More! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

EYE on NPI – Adafruit Daily — EYE on NPI Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

Adafruit IoT Monthly — The 2024 Recap Issue!

Maker Business – Adafruit Daily — Apple to build another chip at TSMC Arizona

Electronics – Adafruit Daily — SMT Tip – Stop moving around!

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.