+

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

+ +

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

+ +

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…

+
+ + + +