Make Serial 1.1 LCD compatible lcdproc smartie Matrixorbital

I’m a new owner of the Grove kit including a 2*16 character LCD. This LCD is paired (unfortunaly soldered) with serial LCD driver board 1.1 on the back.
My Arduino is a Leonardo type.

I was able to make sketch and send temperatur readings to this display. So far so good.
Now I’d like to behave the display (plus Arduino) as a lcd-smartie , lcdproc, Matrixorbital compatible device.
Think of the Seeeduino USB-LCD-backpack.

Does one already made a functioning sketch?
Does it realy work as a Winamp-plugin?

Alterntively reprogram the serial driver board to get the same functionality? It has its own MCU and is accessible via ISP junctions.

Any hints please?

Hi , we just use LCD to display something through digital pins but no idea through USB directly.

Maybe we will have a try in the future.

Comment on your spamcontrol.
My post will contain open source code , no spam!!!
Since I want and have to respect the GPL and LGPL. I have to name the author.
Ofcourse with the corresponding website. Hu?
For now saved as draft. Awaiting your ok.

This following is sketch is what we are comming from. Google for it. Downlaod the sketch and do some modifikations.
I will come later to the details if the mod let me post the long code listings.

Snip begin:

This took long.
But this give the time to figure it out. Now I have a working Grove TWI-LCD nearly 100% working as Matrixorbital-LCD with LCDSmartie.
Test with lcdproc to follow.
Please bare with me. I’m a beginner but never gave up.

A software emulator for Matrix Orbital character display commands on Arduino.

V1.5 28/12/2011
Added fixes by yosoyzenitram, prettified code a little and added all Matrix Obrital commands for display model LK204-25.

V1.0 6/2/2010
Coded by giannoug giannoug at gmail
Based on code by nuelectronics

You can use whatever screen size you want, but you will
have to make proper adjustments to both this file and at
LCDSmartie’s configuration menu or whatever program you
might use.

Matrix Orbital LK204-25 manual (for command reference):

The circuit (make sure to power the LCD):

  • LCD RS pin to digital pin 12
  • LCD E pin to digital pin 11
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2
  • LCD Ve pin (contrast) to digital pin 6


snip end. Sarcasmus on.

Please mod: I’d like to post usefull info about the code to USE your serial lcd.
sketch-code is no SPAM.


Sweet. Please let me know what to do.
The mentioned sketch is about 4 bit mode lcd. Is this the right thing?
My grove serial display came with 4 wires only.



  1. this is the right sketch - this is the code we are come from
  2. 4bit mode is not the same as 4wire, do not care about this

We will patch the apropriate code in.

Awaiting the allowance from the mod. :laughing:
Huh! Stay cool.
Hopefully it will not last so long again.
The forum staff seems to be a little underpowered.


I’m not the fool. Must be someone else :laughing:

The working LCD attached with Boarduino, provided with some info from Winamp with Matrixorbital.dll-plugin.
depicted without keypad.
Feel free to add this function via additional keypad. Not tested. It is not in my focus.

Have some guidance for you

tested setups: please note the different pin configuration for rx,tx

USB Boarduino V2 : slcd( 9,10)
Arduino Leonardo : slcd(11,12)

You have to remove / adapt all entries refering to the LiquidCrystal.library.

add as usualy #include for SerialLCD.library and SoftSerial.library
add Serial.LCD (slcd 11,12) ; look at the tutorials from the wiki for Grove LCD 1.1b

do the setup with slcd.begin();
establish the serial connection
setup lcd power , lcdbacklight
write some stuff to the screen to prove the lcd is responding

Main part:

change commands :
find commands with and change them to

some commands need to be changed
example: change lcd.write(0b00001100); to slcd.write(20) or their correspondence i.E. slcd.clear(); .
special case: find and replace it with

Some cases have to be changed to reflect the code the TWI-LCD is really working with. (found by trial and error)
Though there is a list of supported commands the notation in the form of slcd.clear(); did not work for all commands.
Some commands do not work as expected or failed completely. Their commandlines had to be deactivated by commenting them out.
I had to move some functions to the blacklist; namely autoscroll() and noAutoscroll().

do the clean-up:
remove references to unsupported libraries, pins and functions i.E. GPIO, analogwrite.
If you do not need the special character handling and Umlaut table (I assume it is needed mostly for correct handling of german characters) comment them out or remove them from the switch(rxbyte)-section.

Good luck

You have pm.