OLEDscope Demonstrates That Vector-Based Displays Are Not Limited to CRTs Anymore!
Single-pixel images drawn on a 128x128 OLED by a 10-cent 32-bit RISC-V microcontroller.
A 128x128 pixel OLED matrix is an inexpensive display option. Typically, the controllers perform a raster scan to provide a persistence of vision effect. Two embedded hackers, Charles Lohr and Görg Pflug, found ways to (ab)use an SSD1306 controller to create an OLED-based vectorscope.
Analog oscilloscopes are CRTs that draw voltage waveforms across the vertical (X-axis) while sweeping across time (Y-axis.) A vectorscope is similar, but it does not sweep. Instead, it drives the electron beam to a specific x and y coordinate pair. By moving the beam rapidly, both instruments create a persistence of vision (POV) display.
(Note: Analog and modern digital oscilloscopes often have an "X-Y mode" that operates similarly to a vectorscope.)
Lohr and Soor's method of driving these OLED screens is very similar to this analog display technique. In OLEDscope's case, a single pixel is active like the beam of a CRT's electron gun. A microcontroller updates the screen while moving the pixel around to draw images, giving a similar POV effect to analog displays.
Pflug's original hack worked on the SSD1306 controller used by 64-by-64 pixel displays. Lohr took that effort in a different direction and found the SSD1327 has a similar, but undocumented, register/mode suitable for 128 by 128 OLEDs. To draw the images, Lohr picked the MCU-CH32V003 from WCH. This 10-cent microcontroller has a 32-bit RISC-V core and runs up to 48 MHz.
The CH32V003 seems to be a favorite of Lohr. For example, we previously covered Lohr's software-defined flyback for a Nixie tube. In that project, a FET and transformer generated the high voltage necessary to drive the Nixie tube with a CH32V003 microcontroller serving as a software-based closed-loop flyback controller.
One reason for using the CH32V003 is because it supports USB through a software-based stack (also created by Lohr). This functionality means the OLED Vectorscope can interact with a PC to receive data for its display via WebHID. This site has a simulation of the display with some examples.
Currently, the OLED Vectorscope draws images at 16 kilohertz. But Lohr believes there might be a way to update the display faster. If you have ideas on updating these registers or want to grab the source code, check out the OLEDscope GitHub repository.