caitriaoneill
Fig. 1 — Moon Flowers, running. The flowers are in front; the laptop behind them is running the hand control. 32 seconds, filmed on the desk where they live.

Moon Flowers

A light first, then a listener. Two RGB LEDs in tissue-paper diffusers on an Arduino Uno, breathing through four colours — and, since Monday, answering hand gestures from the same tracking stack as Sunday's projects.

The light

The design started from a breathing mushroom light. What got built is that light's program on an Arduino Uno, with the diffusers made from tissue paper, which is how they ended up flowers.

Each flower is one common-anode RGB LED. Its common leg goes to 5V. Each colour channel runs through its own 220 Ω resistor to a PWM pin — pins ~3, ~5 and ~6 for the first flower, ~9, ~10 and ~11 for the second — and the pins sink the current to ground inside the chip, so the finished build has no ground wire. The program walks the colour from cyan to azure to violet to magenta and back over about eighteen seconds, with a breathing fade under the whole walk. Nothing in it needs a network or an app; power it and it breathes.

Close-up of one clear RGB LED standing in the breadboard, its four legs visible, three resistors wired behind it, jumper cables rising out of frame.
Fig. 2 — One of the LEDs before its diffuser: four legs — the common leg and one per colour — with a 220 Ω resistor on each colour leg.

The LEDs started on the breadboard and moved off it on roughly twenty centimetres of jumper wire each, because the diffuser stems needed the reach.

A tissue-paper flower glowing cyan, held high in a helping-hands clip; below it the breadboard with the second LED still socketed, and the Arduino Uno at the edge of the desk.
Fig. 3 — The build, mid-move: one flower lit in the helping-hands clip, the second LED still socketed in the breadboard below it.

What failed, in order: twice in a row, the sketch file that went to the Uno had the whole program pasted into it twice, and the compiler objected to the duplicate. Then the first working version glowed mostly blue — the colour values in the sketch were wrong, not the wiring. The resistor arithmetic, checked with a meter before anything was plugged in, was never the problem.

The gestures

On Monday the flowers were wired into the hand tracking from Sunday. The laptop camera watches my hand; the Python reads the gesture from the MediaPipe landmarks [1] and sends a command to the Uno over the same kind of serial link the LED rig used [2]. The gesture changes what the flowers do. Left alone, they go back to breathing.

It works, with one caveat doing real work in that sentence: in low light the tracking loses my hand, and until it finds it again the flowers breathe on their own. The room these live in is lamplit, so the caveat comes up most evenings.

Both flowers lit over the laptop — one yellow-green, one blue — with the breadboard and Arduino Uno on the desk in front; on the laptop screen, Caitria's hand raised in the hand-control window.
Fig. 4 — Both flowers in place over the laptop. The screen is running the hand control; the breadboard and the Uno sit in front of it.

Where this leaves it

They live on the desk. Sunday's tracking had a feedback list attached to it; the flowers are the part of that week that got finished — a light that breathes when nobody is asking it anything, and listens when somebody is.

Sources

  1. MediaPipe Hand Landmarker — developers.google.com. The hand tracking, used as provided — the same stack as Sunday's projects.
  2. pySerial documentation — pyserial.readthedocs.io. The serial link between the Python and the Uno.
  3. Arduino CLI, getting started — arduino.github.io. The sketch was written and uploaded from the Terminal.

FILED UNDER — MOON FLOWERS · BLOG · OCTOBER 2026