published: February 1, 2021 —
last modified: October 23, 2025
I am currently working on the input panel board for the pet-feeding device. You are invited to review the board and send me your comments or suggestions via this page, Twitter or email.
Table of Contents
About the Input Panel
The input panel is directly connected to the controller and contains the rotary encoder for the input and four LEDs for various status displays. The input panel also connects to the LCD display via I2C bus and contains the optional level shifter from 3.3V to 5V.
It is mounted with four screws to the front panel, to provide a solid base to the rotary encoder and its knob.
Design Goals
My main idea is to produce a board, someone can use without experience of PCB design software. The design does not have to be universal, but versatile for its intended use.
The board is versatile for many different controllers and situations.
The user populates the parts they need.
It can be used with various I2C connected displays.
It can be used with MicroMatTch connectors or soldered wires.
Solder jumpers to customize the board.
The board can be produced cheaply.
Large via holes.
Large pad and trace distances.
Two layers.
All components can be ordered from various suppliers.
The expensive components are optional.
The Schema
The schema contains the part numbers where needed. Components, like the LEDs are not labeled, as the user can use any they like.
I've released Pattern Generator v2.0.4 with a rewritten 64-bit fixed-point backend, a new shape browser, extra placement algorithms, adjustable canvas shapes, faster style previews and improved file handling. It's free for macOS and Windows — read the full post to see examples, download links and details.
Posted on 2019-07-16— C++, Improve your Code, Learn
I introduce C++17 structured binding with approachable examples: returning multiple values via std::tuple, binding to structs and arrays, and using references to avoid copies. If you use a C++17-capable compiler and want cleaner, clearer code, read the full article for practical examples and tips.
Posted on 2019-07-29— C++, Improve your Code, Learn
I explain C++11 enum class: why it prevents name conflicts, how it compares to traditional enums and common workarounds, with practical Arduino-friendly examples. If you want clearer, safer enum usage in your interfaces, read the full post for code samples and simple best-practice guidance.
I designed a 3D-printable bottle opener to help seniors and people with limited grip turn 26–30mm plastic caps. The tapered 72-tooth socket adapts ±1mm and the handle has finger notches — print in PETG. Download the STL files and read the full post for print settings and tweaks.
I built a simple, single-portion programmable cat feeder in about four days using rapid prototyping. I describe the Fusion360 sizing, plywood shell, servo mechanism, electronics, and the issues I encountered with breakout boards. If you're curious, read the full post for parts list, wiring and source code.
Posted on 2019-07-08— C++, Improve your Code, Learn
I guide you through evolving a simple Arduino blink example into a reusable event system. In Part 2 I cover function-pointer events, an EventLoop module, and practical multi-event examples. If you want cleaner, non-blocking firmware structure, read the full post for code and explanations.