A device consisting of 7-segment display units, controllable via a serial link (with Arduino sketch and LEGO enclosure).
See a videos of the device in action.
I stumbled on this module Seven Segment for micro:bit. I immediately thought that such a thing would be a nice external display for the new LEGO Mindstorms Robot Inventor - it does not have a display - at least not one that can display bigger numbers. But I want it smaller to better fit LEGO.
Later I found that sparkfun has something similar. This board is also a bit too wide to my liking, and retired.
There is a python script to generate font tables. I designed two fonts, one LookAlike7s with characters that are as close as possible to the real thing. The second font Unique7s maps each character to a unique pattern on the 7-segment display.
Design of the electronics: the power architecture, display control, wiring (used pins), schematics, and finally PCB with IDC socket. My project on EasyEDA is public.
Modeling the interrupt service routine (ISR). The ISR needs to support brightness control and blinking. The model is made in Python, but in the end, the ISR is the central part of the ATmega firmware, driving the 7-segments.
The firmware for the Arduino Nano, the controller on the SSoS board. First some proof of concept sketches (using SFRs for ports, timer, ISR), finally the end-product.
There is an extensive user manual with examples (as implemented by the firmware).
I 3D-printed an enclosure so that I can use SSoS with LEGO Mindstorms.
See the LEGO code for some examples of how to use the SSoS device with LEGO.
The (LEGO) enclosure we made is 4×8 LEGO units (studs). But LEGO Technic components usually have an odd length. So I set out to miniaturize making a Seven Segment over Serial Small (SSoSS). Target is 3×7. To achieve this, I made a single PCB, combining both the "Nano" and the 7-segment units.
Section electronics2 shows the schematics and the unexpected firmware flashing problems.
Section enclosure2 shows the new enclosure, 3D printed via JLCPCB.
(end)