The GLO-216 2×16 Multifont Serial OLED allows you to translate 9600bps serial data into bright, high-contrast text on a compact screen. This low cost, low power serial display comes in two font colors (yellow and green) and is made and sold by seetron.com, owned by Scott Edwards of Electronics Now and Nuts & Volts fame.
Think of the GLO-216 as a “mini terminal” that displays text and custom characters and responds to control characters such as tabs, linefeeds, carriage returns, backspace, etc. It is compatible with RS-232, Stamps, PICs and Arduino; pretty much any serial out, really.
The display uses less than 50mA, so it can be connected straight to the Arduino’s power supply.
The GLO-216 can store startup text and custom characters in EEPROM and there are instructions to save and recall this information. The simple sketch created to test the display creates and saves a new heart shaped custom character, then displays it on the screen along with some text.
Seetron.com has set up a special offer for tinkerhobby.com readers: you can save 20% off a GLO-216 if you use promo code “HOBBYIST” upon check out. For more information and to purchase, see the GLO-216 product page.
Here’s the GLO-216G just out of the box:
And here’s the view from the back, notice the small board that brings out the pins nicely to a 5-pin header and saves you some soldering work:
This is what it looks like when you first power it on:
And here’s the result of running the sketch I included in this post, that defines and prints a custom character:
The sketch to drive the display uses the “newsoftserial” library, which can be found here: https://arduiniana.org/libraries/newsoftserial
A few nice features of the newsoftserial library compared to the original softserial are more accurate timing, smaller code size, but best of all the ability to output “inverted” serial (the Arduino documentation states that their serial output is not RS-232 compatible, but newsoftserial permits the Arduino to output inverted serial).
Sketch:
// Test of the GLO-216G serial OLED display // Natalia Fargasch Norman @ tinkerhobby.com // GLO-216Y/G information: https://www.seetron.com/glo216.html // Programming reference: https://seetron.com/glo216/glo216prog.html #include <SoftwareSerial.h> #include <GLO216.h> #define rxPin 255 #define txPin 3 #define NULL 0x00 int inverted = 1; SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin, inverted); void setup() { pinMode(txPin, OUTPUT); digitalWrite(txPin, LOW); mySerial.begin(9600); delay(10); // clears the screen and select font size and style char instr1[] = { clearScreen(), defaultSize(), selectSize(), // tall selectSize(), // wide selectSize(), // big textStyle(), NULL }; const char message[] = "Hi GLO!"; mySerial.print(instr1); // print message according to prior instructions mySerial.print(message); // defines a new custom heart shaped character char instr2[] = { // escape sequence to receive new custom character escape(),'D','0', // heart pattern using tool at https://seetron.com/apps/app_cceditor.html 0x80,0x8A,0x95,0x91,0x8A,0x84,0x80,0x80, NULL }; // print character 0x80, the newly defined heart const char msg[] = {0x80, NULL}; mySerial.print(instr2); // print message according to prior instructions mySerial.print(msg); /* delay(3000); char instr3[] = { clearScreen(), NULL }; mySerial.print(instr3);*/ } void loop() { // ... }
GLO216 functions:
// GLO-216G serial OLED display // Natalia Fargasch Norman @ tinkerhobby.com // GLO-216Y/G information: https://www.seetron.com/glo216.html // Programming reference: https://seetron.com/glo216/glo216prog.html /* Parameters for setPosition and rightAlign instructions: setPosition: position + 0x40 rightAlign: '0'-'7' */ /* Parameters for escape instructions: Define lower custom character: 'D', '0'-'7' Define upper custom character: 'd', '0'-'7' Recall saved text: 'E', '0' Restore custom character set: 'e', '0' Save text since last clearScreen: 'X', '0' Store custom character set: 'x', '0' */ // Moves printing position to the first character of top line char homeCursor() { return 0x01; } // Cycles the font size: normal -> tall -> wide -> big -> normal -> ... char selectSize() { return 0x02; } // Sets font size to default of small on two lines of 16 characters char defaultSize() { return 0x03; } // Behaves like the backspace key char backspace() { return 0x08; } // Moves printing position to the next multiple of 4 location char tab() { return 0x09; } // Moves the printing position down a line char linefeed() { return 0x0A; } // Moves the printing position up a line char verticalTab() { return 0x0B; } // Clears the screen and moves printing position to 0 char clearScreen() { return 0x0C; } // Moves to the first printing position of the next line char carriageReturn() { return 0x0D; } // Turns on the OLED driver circuitry when it has been previously turned off char turnOn() { return 0x0E; } // Turns off the OLED driver circuitry to save power char turnOff() { return 0x0F; } // Sets the printing position according to value of next byte char setPosition() { return 0x10; } // Prints text at the righthand end of a field of defined size from 2-8 char rightAlign() { return 0x12; } // Sets seven segment style font for large characters char sevenSeg() { return 0x13; } // Sets text style font for large characters char textStyle() { return 0x14; } // Begin multi-part instruction char escape() { return 0x1B; } // See https://seetron.com/glo216/bpigloupgg.html char bpkInstr() { return 0xFE; }
Header file:
// GLO-216G serial OLED display // Natalia Fargasch Norman @ tinkerhobby.com // GLO-216Y/G information: https://www.seetron.com/glo216.html // Programming reference: https://seetron.com/glo216/glo216prog.html #ifndef GLO216_h #define GLO216_h // Moves printing position to the first character of top line char homeCursor(); // Cycles the font size: normal -> tall -> wide -> big -> normal -> ... char selectSize(); // Sets font size to default of small on two lines of 16 characters char defaultSize(); // Behaves like the backspace key char backspace(); // Moves printing position to the next multiple of 4 location char tab(); // Moves the printing position down a line char linefeed(); // Moves the printing position up a line char verticalTab(); // Clears the screen and moves printing position to 0 char clearScreen(); // Moves to the first printing position of the next line char carriageReturn(); // Turns on the OLED driver circuitry when it has been previously turned off char turnOn(); // Turns off the OLED driver circuitry to save power char turnOff(); // Sets the printing position according to value of next byte char setPosition(); // Prints text at the righthand end of a field of defined size from 2-8 char rightAlign(); // Sets seven segment style font for large characters char sevenSeg(); // Sets text style font for large characters char textStyle(); // Begin multi-part instruction char escape(); // See https://seetron.com/glo216/bpigloupgg.html char bpkInstr(); #endif
Keywords file:
####################################### # Syntax Coloring Map for GLO216 ####################################### ####################################### # Datatypes (KEYWORD1) ####################################### GLO216 KEYWORD1 ####################################### # Methods and Functions (KEYWORD2) ####################################### homeCursor KEYWORD2 selectSize KEYWORD2 defaultSize KEYWORD2 backspace KEYWORD2 tab KEYWORD2 linefeed KEYWORD2 verticalTab KEYWORD2 clearScreen KEYWORD2 carriageReturn KEYWORD2 turnOn KEYWORD2 turnOff KEYWORD2 setPosition KEYWORD2 rightAlign KEYWORD2 sevenSeg KEYWORD2 textStyle KEYWORD2 escape KEYWORD2 bpkInstr KEYWORD2 ####################################### # Constants (LITERAL1) #######################################
Download these four files in an archive here: GLO216.zip

The guy from the band Rammstein used the Arduino tool to steer the microphone movement next to the amplifier until he achieved the best sound.