Creative Hardware

A Convex Lens Is the Reason This Animated Eyeball Actually Looks Like an Eye

Adafruit's Terminator eyeball build pairs a HalloWing M0 Express with a TFT display and — crucially — a lens, which is what turns a flat screen into something with depth.

It is October, and Adafruit’s Electronic Halloween season has begun — which, beneath the skulls and candy bowls, is reliably the best few weeks of the year for small, complete, well-documented electronics builds.

This one is a Cyberdyne Systems T-800 eyeball: a HalloWing M0 Express with its TFT display, the eye-animation firmware, a convex lens, and a plastic under-skull to mount a Terminator mask on a stand.

John Park’s build for Adafruit.

The lens is the whole trick

Strip away the Terminator and what you have is a flat, round LCD playing a looping animation of an eye. That, on its own, looks like a screen showing a picture of an eye. Everyone has seen it and nobody is fooled.

Put a convex lens over it and it stops being a screen.

Three things happen optically, and they are worth understanding because they generalise to any prop or installation with a small display in it:

Magnification with a curved field. The lens magnifies the centre more than the edges, so the flat image acquires an apparent bulge. The iris reads as sitting on a sphere. This is doing for free what would otherwise require rendering the eye as actual 3D geometry with correct perspective.

A specular highlight. A glass or acrylic dome catches room light and throws a bright spot across its surface — and that highlight is the single strongest cue the visual system uses to read a surface as wet. Eyes are wet. A matte display can never be, no matter what you render on it; a lens is wet-looking for nothing.

Parallax that moves with the viewer. Because the lens sits a few millimetres above the display, the apparent position of the iris shifts slightly as you move. A flat screen’s image does not move. That shift is a real depth cue and it is why the effect survives being looked at from an angle.

The broad lesson: adding optics in front of a cheap display is usually a better investment than a more expensive display. A lens, a diffuser, a fresnel, a sheet of smoked acrylic, or a half-silvered mirror will do more for how a small screen reads in a physical object than doubling its resolution. It is an under-used move in installation work, where the instinct is to reach for a bigger panel.

Why the HalloWing is a good board for this, and why it’s nearly obsolete

The HalloWing M0 Express is Adafruit’s purpose-built prop board: an ATSAMD21 with a round 1.44” TFT, capacitive touch pads, an accelerometer, a light sensor and a LiPo charger, all on one PCB. It exists specifically so that “a screen with a sensor in a prop” needs no wiring at all — which, when you are building ten of something for a haunted house, is the entire value.

Two practical notes if you are building this now rather than in 2018:

The M0 is the old chip. An ATSAMD21 at 48MHz with 32KB of RAM is tight for CircuitPython and image work, which is why the eye firmware is Arduino-side and heavily optimised. Adafruit’s HalloWing M4 Express — a SAMD51 at 120MHz with considerably more RAM — runs the same kind of project with much more headroom, and is the one to buy if you want to modify the animation rather than just flash it.

The eye animation is reusable and the good part is the code. Adafruit’s “Uncanny Eyes” lineage has been ported across boards for years, and it is a genuinely clever piece of embedded graphics: it draws the eye as a set of concentric regions with a precomputed polar-coordinate lookup table, so it can redraw a convincing iris with saccades and blinks on a microcontroller with no GPU and almost no memory. Worth reading even if you never build a prop.

Beyond Halloween

An animated eye in a physical object is not a seasonal idea. It is one of the strongest and cheapest ways to give a thing apparent attention — the sense that it has noticed you — and apparent attention is most of what makes an object feel alive.

We covered a project two days ago where two animated eyes on an OLED were doing the heavy lifting of communicating a voice assistant’s conversational state. Same principle, different budget: eyes are a universally legible status display, they need no language, and a person across a room can read them instantly.

Add the light sensor or the accelerometer the HalloWing already carries and the eye can respond — looking toward motion, reacting to being picked up. At which point you have an object with a gaze, which is a very small amount of hardware for a very large effect.