Firmware flow
Processing one line through speech and tactile output
Selected firmware routine for a buffered text line; the diagram follows the order of calls in flushAndProcess().
A nonempty line is logged, spoken and then passed to the tactile scrolling routine. The firmware acknowledges the tagged input port before clearing the buffer and its source tag.
The calls run speech before tactile output. Physical actuation and accessibility performance were not tested.
Read the implementation
Selected firmware excerpt. The diagram explains the code; it is not a hardware test.
Selected implementation
void flushAndProcess() {
if (!line.length()) return;
PC.print(F("\n[Speak+Braille] "));
PC.println(line);
// Speak then display
speakLine(line);
showScrolling(line);
// ACK back to source
if (lineSrc == SRC_BT) { BT.print(F("ACK ")); BT.println(line); }
else { PC.print(F("ACK ")); PC.println(line); }
line = "";
lineSrc = SRC_NONE;
}Technical notes
Speech before tactile output
The line-processing routine calls speech first, then the tactile scrolling routine. Speech checks the entire trimmed line against a fixed dictionary; unmatched text falls back to spoken letters and pauses.
Five cells from four output bytes
The tactile path maps characters to six-dot patterns and pages the text in groups of five. Four buffered bytes are sent through SPI to chained 74HC595 shift registers, with the latch controlling when the output changes.
Buffered serial input
USB Serial and serial Bluetooth feed one shared text buffer. A newline or an idle interval triggers processing, after which the routine acknowledges the tagged input source and clears the buffer. Source inspection establishes the software sequence; physical tactile actuation and accessibility performance were not tested.