Hannah Builds Things.

The Art of Making a Start

Cover Image for The Art of Making a Start
Hannah Brown
Hannah Brown

A case study: Addressable LEDs project

As a software developer, I've always had an affinity for hardware. There's something deeply satisfying about understanding something tangible and practical, especially compared with the ephemeral nature of software. That desire mainly resulted in me watching a lot of videos of people building computers out of transistors on breadboards. I was mesmerised by the process and loved watching the pretty lights flash seemingly at random.

One year, my observant boyfriend took note and bought me an Arduino and breadboard set for Christmas.

This gift delighted and scared me in equal amounts. Much to the confusion of my family when I squealed “a breadboard” and instead of removing a beautiful piece of carpentry we could serve the Christmas cheese course on, I removed a small plastic rectangle with more wires than they had ever seen. What they didn't appreciate were the possibilities that this gift unlocked. I did, however, which is why I was completely overwhelmed. So I carefully shut the box and put it at the bottom of the cupboard. I told myself I'd open it again when I had more time, or more confidence, or a great idea. Instead, I left it there, at the back of the cupboard, for three years.

This is a story about the time I finally opened that box.

Finding a project

The Arduino kit came with plenty of lessons and example projects, but I struggled to engage with them. They reminded me of school, and although I enjoyed school, I no longer had the desire to purely learn theory.

None of the projects excited me. I didn't want exercises. I wanted a project of my own, something I could explore, fail at, and learn from.

The problem was that I had no good ideas. Anything I came up with felt overcomplicated or pointless and easily outperformed by doing the task manually.

Then it clicked: addressable LEDs.

They were simple to get started with, visually rewarding, and easy to extend. I could begin small and keep adding complexity as I learned. Better still, I had already built a lamp that needed lights.

What if the lamp wasn't just one colour? What if the base glowed warmly, like the lights of the inhabitants inside, while the shade became a leafy green canopy above?

That was enough of an idea to begin.

clay lamp

Making a Start

I'd had the kit for so long that failure no longer mattered.

What mattered was starting.

The plan was simple. I'd use addressable LEDs with a handful of preset colours and effects, controlled by a remote. The LED strip would run through the base of the lamp and up into the shade, with tissue paper at the bottom to diffuse the light.

That was enough of a plan.

When I wired up the circuit and the LEDs lit up, I was hooked. Despite the unfamiliar language and new concepts, my background as a developer kicked in. Reading verbose documentation and trawling outdated forum posts felt familiar, even comforting.

By the end of the first day, I had my TV remote controlling the lights.

red LEDs

The errors

The first mistake I made was the pins I chose. Individually, everything worked: the remote worked, and the LED strip worked. Together, nothing did.

I'd unknowingly chosen two pins that couldn't cooperate. The LED library temporarily disables interrupts while sending data, and the IR receiver depends on them. I'd picked the worst possible combination. Once I moved the LEDs to pin 6 and the IR receiver to pin 2, everything came together.

Having successfully debugged my first hardware issue, I woke up the next day full of optimism. The project was basically complete. There was just one small bug left.

The yellow lights would switch off after a minute or so, while the green lights stayed on all day. I reread the code. The implementations were identical. That meant it had to be hardware.

I'd followed a YouTube tutorial, and my wiring looked right. Although, my understanding of electronics hadn't progressed since school, and all I remembered was something about Ohm's law and V = IR. I was stuck.

At that point I turned to the world's new favourite pair programmer, ChatGPT. It politely informed me that I'd made pretty much every common beginner mistake. Which shouldn't have been surprising given I was a beginner.

The quick progress on day one was undone as the circuit had to be completely rewired. Yellow LEDs draw significantly more current than green ones, and I simply wasn't supplying enough power. The fix meant rewiring the circuit, adding a proper power supply for the LEDs, and including a resistor to protect them from current spikes.

Once I did that, the lights stayed on.

ChatGPT was very helpful but wasn't right about everything, though. One suggestion involved drawing a “dummy load” to keep my power pack from switching off, which very nearly caused an electrical fire. That was a useful reminder that hardware mistakes aren't just bugs. They can be dangerous.

Nothing burnt, nothing melted, and I switched to a safer power setup that didn't smell faintly of regret. Here's the final result.

IMG_9924.HEIC

The learnings

ChatGPT can be helpful but should never replace your own judgment, especially when it comes to electronics. In software, code smells don't actually smell of burning. To its credit, AI is a pretty helpful tool for the most part.

For three years, the Arduino sat at the bottom of a cupboard because I was waiting to be ready. It turns out I never was. Nothing I built was particularly clever, and there's plenty I'd do differently next time. That's fine, I'm still learning.

Mostly, I'm just glad I started.

If you actually came here for the code, here's the github repo link.