Alright, let’s talk about this “matrix watch” thing I messed around with. I’ve been wanting to make one of these for a while, so I finally took the plunge.

First off, I gathered all the stuff I needed. This involved digging through my parts bin and ordering a few things online. I grabbed an ESP32, ’cause that’s what I had lying around, and it seemed powerful enough. Also needed a little OLED screen. I already had a few of those, I found one that I think is SSD1306.
Next up, I started messing with the code. I’m no coding whiz, so I grabbed a simple “matrix” animation example I found from an old project and modified the code for driving the display, I used the u8g2 library for that. It seemed easy enough to understand. I changed a few settings to fit my setup, like the screen resolution.
Then came the moment of truth. I hooked everything up, pretty basic wiring, and fired it up. And… it worked! Well, sort of. The animations were running, but something was totally off. The display kept flickering, and the animation was choppy, nothing like the smooth effect I was going for.
So, I dove back into the code. I spent a couple of hours tweaking this and that, trying different refresh rates, I even tried to simplify the drawing code by reducing the number of elements to be updated, and even tried to add some delays. Nothing seemed to make a real difference. It was still a flickering mess.
At that point, I almost gave up. But then, I remembered something about the I2C communication on ESP32 is somehow slow.

I decided to check the I2C bus frequency, I found that it’s set at 100khz by default. I changed the I2C frequency setting, I tried 400khz first, it’s slightly better, but still flickering, then I tried 800khz, it got even better, but then I tried 900khz, now it’s just smooth, no more flickering, no more choppy animation, just smooth matrix rain animation.
So, that’s about it. Took me the whole afternoon, but I finally got it running the way I wanted.
Here are the things I learned from this little project:
- Check your hardware. Even if it worked before, double-check that it’s still in good shape.
- Start simple. Don’t try to build the whole thing at once. Get each part working on its own first.
- Don’t be afraid to experiment. You might be surprised at what you can come up with.
- I2C can be slow if not configured properly.
- Never give up, even when it seems impossible.
It’s not perfect, but it’s mine. And hey, it was a fun way to kill an afternoon.