SmartNixie Nixie Tube driver


This module interfaces with the Smart Nixie Tube, from Switchmode Design

These consist of two PCBs, containing an IN-14 Nixie Tube, RGB LED, a boost converter to generate the high voltage for the tubes, and a serial interface to control it. They include connectors to daisy chain multiple units together, with the data being passed from left to right (like a shift register). They use an ATmega328P microcontroller, and are Arduino-compatible. The warm glow of a Nixie tube offers a unique retro aesthetic.

The Smart Nixie Tube modules require a separate power supply at 9-12V.


Connect the Espruino ground to the Smart Nixie Tube ground (pin on the 6-pin header closest to the power connector).

Connect any 5V-tolerant UART TX pin on the Espruino to the Smart Nixie Tube RX pin (4th pin from the power connector on the 6-pin header) on the left-most Smart Nixie Tube. Although the Smart Nixie Tube logic runs at 5v, no level shifter is required to use with the Espruino, as long as the pin used is 5v tolerant.


Setup the Serial interface to use 115200 baud, and call connect:

var nixie=require("SmartNixie").connect(Serial3,digits);

digits is the number of Smart Nixie Tubes chained together.

The following functions are provided to set the options for the tube. Note that in all cases, no error checking is performed, in order to reduce the memory footprint of the module.


nixie.send() sends the data to the Smart Nixie Tubes. No changes are sent to the Smart Nixie Tube devices until this is called. This allows you to make multiple changes, and then apply them all at once.

nixie.setTube(digit,number,ldot,rdot,brightness,red,green,blue) sets ALL the options for the specified digit. Number is the numeral to display (should be a number between 0 and 9, ldot and rdot set the status of the left and right decimal places - these should be 0 or 1. Brightness, red, green, and blue should be a number from 0 to 255.

nixie.setString(string) sets the provided string to be displayed. Valid characters are space, 0-9, comma, and period. Periods and commas control the left and right decimal places respectively, and apply to the following digit, not the preceeding one. LED and brightness are not effected.

`nixie.setLED(digit,red,green,blue) sets the LED color for the specified digit.

`nixie.setBright(digit,brightness) sets the brightness for the specified digit.

`nixie.setAllLED(red,green,blue) sets the LED color for all digits (default 0 - off).

`nixie.setAllBright(brightness) sets the brightness for all digits (default 128).


This simple example connects to a bank of 6 Smart Nixie Tubes and displays the first 6 digits of Pi - with one wrong digit - and highlights the correct digits in green, and the error in red:

var nixie=require("SmartNixie").connect(Serial3,6);



SmartNixie build kits can be purchased from the manufacturer:

This page is auto-generated from GitHub. If you see any mistakes or have suggestions, please let us know.