ViSi-Genie library to work with 4D-uLCD displays

Hi folks!
Check out the first version of my new library:

The library is used to communicate with 4D-uLCD displays produced by 4D Systems company and with firmware made in the ViSi-Genie 4D Systems Workshop environment.

Here is a list of currently supported Genie objects.


  • Dip Switch
  • Knob
  • Rocker Switch
  • Rotary Switch
  • Slider
  • Trackbar
  • Winbutton


  • Angular meter
  • Cool Gauge
  • Led Digits
  • Custom Digits
  • Led
  • User Led
  • Meter
  • Tank
  1. Plug the display to your computer and create a Visi-Genie program for it using the Workshop IDE.
  2. Create a XOD program using this library. Use the init node and a UART interface to set up the display then you can link it with different inputs or outputs.
  3. Deploy the program to your Arduino then plug the display to the controller.

Here is the example I’ve made with Arduino Uno, gen4-uLCD-32DT, and 4D Arduino Adaptor Shield

2 1

Try it!
Please, reply error messages and suggestions at this topic.


Thanks Max - that’s great! - I’ve got your library to work here in Cambridge, and will spread the word among the Biomaker group. Your nodes work well with the Biomaker starter kit ( I’ve been running the 4D Systems IDE - ViSi Genie (under a Windows10 emulator) and XOD on a Mac (common platform in the biology community). I think that access to wysiwyg editing and code-free programming for instrumentation will make a big difference for the academic and DIY science communities! Thanks for your help with this. Jim. H.

1 Like

Hey gabbapeople
love what you did with this Library verry nice and clean.
I have written up all the other ViSi Genie Objects and uploaded it (it depends on your Lib and will install it automatically)


Contrast:       Display on or off (uLCD-43P/PT/PCT Brightness 0-15)
Dip switch:	    Read and Write
Knob: 		    Read and Write
Rocker switch: 	Read and Write
Rotary switch: 	Read and Write
Slider: 		Read and Write
Trackbar: 	    Read and Write
Winbutton: 	    Read and Write
Angular meter:  Read and Write
Coolgauge: 	    Read and Write
Custom digits: 	Read and Write
Form: 		    Write
Gauge: 		    Read and Write
Image: 		    Read and Write
Keyboard: 	    Read
Led: 		    Read and Write
Led digits:     Read and Write
Meter: 		    Read and Write
Strings: 	    Pre-Read, Pre-Write, Dynamically Created ASCII
Thermometer:    Read and Write
User led:       Read and Write
Video: 		    Read and Write
Sound: 		    Read, Play, Volume, Pause, Continue, Stop
Timer: 		    Write
Spectrum: 	    Read and Write
Scope: 		    Write
Tank: 		    Read and Write
UserImages: 	Read and Write
Pin Output:     Write
Pin Input: 	    Read
4Dbutton:       Read
AniButton:      Read
Color Picker:   Read (Needs to be converted to something useful R.G.B ect...)
User Button:    Read
1 Like

Many thanks for making these libraries - they are great additions to XOD. I’ve used gabbapeople/4d-ulcd to demonstrate reading data from an absolute orientation sensor:


Hi Bradzilla84 - we’ve been using your (and gabbapeople’s) XOD libraries to interface with 4D Systems touchscreens, as part of the Biomaker initiative based in Cambridge ( Both libraries have been really useful - thanks! I’m using the libraries as part of a test rig - for testing of 3D printed air-heated/cooled microincubators for molecular diagnostics, etc. I’ve been using the 4D Systems Visi-Genie Scope widget to display sensor status, using your write-scope node. I was wondering if there is a way of implementing multiple traces using the existing node? (Looks not, but I might be missing something). I think that the Arduino library supports the up-to-4 different coloured traces allowed in Visi-Genie? Thanks in advance for any help with this. Multiple Scope traces would be very handy for lots of scientific applications…J.

1 Like

Hi Jim,

In Workshop4-IDE the Traces property of the scope must be set to 4. The values written to the scope are assigned to each trace in turn; i.e. the first value is assigned to trace 1, the second to trace 2, and so on. My approach to making sequential writes to the scope using XOD is to chain four write-scope nodes together. To make it a little easier to chain the write-scope nodes together, I’ve modified @bradzilla84’s write-scope node by adding a DONE pulse output:

You will find my scope library here:

It includes the example above. The source code for the GUI can be found here:


Brilliant - thanks Matt. That makes sense! Will give it a try. bw, Jim.

Worked nicely. Brad’s write-scope also managed to sort out the ordering of trace updates, without any particular help on my part - just used separate write-scope nodes for each trace. Thanks both, Jim.

Dear wayland
honest greeting and respect
we are group of (nonprofit) researcher’s& students working on method to combat covid19 in Africa
we are trying to out put sensor reading graph plotting on slimier system ( **Nextion Enhanced NX8048K070 7.0 Inch HMi)
we are using XOD for fast prototyping
please can you help use with any laibarary or cod mo-defecation ?

Hi @fantasydoom and welcome to the forum,

I should be able to create a XOD library for you. I don’t have a Nextion display, so I will need to order one before I can get started.

Thanks a lot wayland god bless you, if i can help with any please contact me