In the world of 16-segment displays, Klais-16 is the biggest I have seen, at about 8cm (3") character height. Multiple displays can be daisy-chained and controlled through serial communication (1 pin, TX). It is open source and available to buy on Tindie at the very reasonable price of US$15 a piece.
The biggest challenge was mechanical, particularly, finding a way to mount the 8 individual displays. Let me explain. I received the displays as ready-to-use (assembled, programmed and tested) products. I did not expected to dis-assemble them (not even partially) in order to mount them. The two mounting methods described in the documentation (using 15mm and 20mm profiles, respectively) ask for just that, basically to cut the original plastic rivets and, eventually, to replace them with (your own) M3 screws when fixing them to the rails. (I actually started going along with either described method until I realized I did not want to open them up). The easiest solution I found in the end was to use 1/2" x 1/2" L-profile, as shown below. For this, I only cut the middle rivets and used the holes to screw each individual display to the rails.
The software support consists in adding one class, DisplaySoftSerial.cpp, shown below.
#include <Arduino.h>
#include <SoftwareSerial.h>
#include "DisplaySoftSerial.h"
SoftwareSerial ss(7, 2); // RX not used; TX=2;
//******************************************************************
//
void Display_t::setup()
{
ss.begin(19200);
}
//******************************************************************
// draw the 8 characters on the screen;
//
void Display_t::writeDisplay(char* displayBuffer)
{
char reverseBuffer[9] = {0};
for (byte i=0; i<9; i++)
{
reverseBuffer[i] = (displayBuffer[7-i]);
}
ss.write(reverseBuffer);
}
//*******************************************************************
// brightness level is number between 0 and 7, 0 being the brightest;
//
void Display_t::setBrightness(uint8_t brightness)
{
// cannot do;
}
//*******************************************************************
//
void Display_t::reset()
{
}
- SoftwareSerial library cannot handle 115200
- only one solder bridge is required