Andrew Kesterson

"Love God. Live Righteously. Die Well."
Source Code || LinkedIn
38 Posts 9 Categories 0 Tags
Categories
Books 14
Philosophy 9
Faith 7
Technology 17
Outdoors 1
Current-Events 7
Leadership 8
History 1
Liberal-Education 1
hot tags

# Devlog Entry - 18 June 2026

2026-06-18 Technology 562 words

I’ve spent all my spare (technology) time learning more about the ESP32, the Arduino HAL, and using some additional integrated circuits.

## 3-bit Flash ADC using LM339N comparators

> Put together a 3 bit flash ADC while waiting on some other tasks to finish. I had meant to do this last week but I didn’t have time. I did learn some new things here, as usual. pic.twitter.com/AAU8mq8pWy

> — Andrew Kesterson (@AKLabsDotNet) June 9, 2026

This project uses an LM339N comparator chip, a voltage ladder, a potentiometer and 4 LEDs to create a Flash Analog to Digital Converter.

It’s worth pointing out that this ADC outputs thermometer code (unary code), not binary. I would have needed to use an additional priority encoder to get it converted down to binary. I didn’t have a priority encoder on hand (though I could’ve built one with quite a few other chips I did have on hand), so I just left it at unary output.

Lessons learned from this project:

- What is a voltage ladder
- How pull up and pull down resistors work
- Breadboards are small finnicky things
- How USB power delivery dummies work

There is a more detailed writeup about this project in my source repository.

## Snake Game on an 8x8 LED Matrix

> It works! Snake on an ESP32 with a 7 segment scoreboard and adjustable difficulty using an 8x8 LED matrix as a display pic.twitter.com/RZPqkQRxEZ

> — Andrew Kesterson (@AKLabsDotNet) June 18, 2026

This project uses 3 74HC595 serial to parallel shift registers, a 7-segment display multi unit, an 8x8 LED matrix, an active buzzer, an NPN transistor, a joystick (later replaced with 4 buttons), a handful of resistors and a potentiometer to make a playable Snake game.

This was easily the most challenging project so far, taking me almost two weeks to get it working right. I wound up having to break the project out across 4 separate breadboards. The breadboards look as gross in real life as it does in Fritzing.

Lessons Learned

- C has admitted design flaws
- Hardware debouncing is definitely the way to go
- The Arduino IDE debugger really sucks
- It’s been a long time since I had to think this hard about what my code was doing to the hardware
- Compiling, uploading, and debugging Arduino code from the CLI
- Breadboards probably introduce just as many bugs as I do
- How to drive a 7-segment display and an 8x8 LED matrix using shift registers
- Embedded platforms have undocumented limits that may surprise you
- You don’t need lots of pixels, or even colors, to make it fun

There is a more detailed writeup about this project in my source repository.

## Closing Thoughts

That 8x8 LED Matrix Snake game left me taxed. I’m probably going to lay off the embedded stuff for a week or so while I work out some stuff in libakgl related to partitioning the game world for actor collisions and some physics engine bits. Then I’m on vacation until July 6, so I may or may not have a devlog in the first week of July at all.

Also, getting into embedded development is like getting into Warhammer. When a new chip costs pennies, a new MCU costs a dollar, an entire dev board costs 5 or 10 bucks, and a new Pi is less than $50…

Recent Posts
2026-07-10
News-2026-Week-2
2026-07-09
News - 2026 - Week - 28
2026-06-30
Just Be Yourself ... Whoever that is
2026-06-30
You Cant Go Home Again