Display+Pushbuttons shield modified for Arduino DUE

Hi all. iI’m new on this forum where i found interesting suggestions.
So i wish to contribute explaining how to adapt a diplay/pushbutton shield for
arduino due.

In my opinion the display/pushbuttons shield is very usefoul for arduino developements,
but i have not found on the market a 16x2 display/pushbuttons shield that is
compatible for my shining new arduino due.
The problem is the 3.3V max i/o level of the ‘due’ versus the 5V
used by the shields.

So i have modified the Microbot LCD Shield for Arduino (code MR007-005)
mading it compatible with arduino ‘due’ and ‘uno’.
In this post i will explain this mod.


The splc780d display controller (on the LCD shield) specifications says that
with VDD = 4.5V to 5.5V, the pins (E, RS, R/W,DB0 - DB7)
accept an Input High Voltage spawning between 2.2V to VDD.
So the display data input is compatible with 3.3V arduino due
digital output levels.
See www.hantronix.com/files/down/splc780d.pdf
See www.microbot.it/documents/mr007-005_datasheet.pdf

The shield display is configured ( R/w pin of the display connected to ground )
so that the controller does not send any data to the mainboard.
So the arduino ‘due’ does not receive any input at 5V.

So the display is compatible with the 3.3V output logic level of the ‘due’.
My early test shows that this display works well @VDD=5V
whith the inputs @3.3V for logic level High

Notice : the main display voltage must be 5V. Connecting
the VDD display pin to 3.3V causes the display shows
very little contrast and is substantially unreadable, still
receiving and showing the correct data.
So even if the display controller chip is full compatible with
a VDD of 3.3V the backlighted LCD is not and must be
powered by a 5V source.

The display on this shield is 100% compatible with ‘due’, and must be powered with 5V
and there is no need to modify the shield for display compatibility.


The shield got 5 pushbuttons sending to arduino, on line A0, an analog voltage
level depending by the button. So the sketch code can read this
voltage value and understand what button is pressed on the board.

The A0 analogic input level used for communicating pushbuttons to the arduino
is referenced to 5V.
Pressing one of the 5 pushbuttons the A0 voltage spawns between
0V and 4V, going to 5V without hitting any button.
These voltages are not compatible with ‘due’ specs and must be modified.

The solution is to broke the pushbutton voltage divisor 5V reference,
linking it to the IOREF arduino pin.
So the new reference is 3.3V on the ‘due’ and 5V on the ‘uno’ & compatibles.

-= The so modified shield will be full swappable between ‘uno’ and ‘due’ arduinos ! =- :smiley:

On my shield the 5V pin is connected to the pushbuttons analogic
voltage divisor by a 3.9K resistor.
This target resistor will be disconnected from the 5V pin and connected to the
3.3V pin. After this simply modification the shield will be ready for the ‘due’

But this resistor is under the display … it’s dangerous to desolder the display …
so i have cut the target resistor outermost terminal and used another 3.9K resistor
from the first pushbutton (where the outermost terminal of the 3.9K original target
resistor was electricallylinked) to the IOREF pin.

See the attached photos & schema

some suggestions if you want to try this mod

  1. measure the electric path of 5 resistor under the display, be sure that the resistor you
    work on is the one connected to the 5V pin.

  2. measure the resistor to cutout. mine is 3.9K but on your board may be of different
    value. You must add a resistor identical to the one that will be cut out.

  3. be sure to cut the correct resistor terminal. check twice with a multimeter.

  4. be sure to remove any, even little, terminal chunks from the target resistor and the board

  5. After the modification be sure you not have short circuited the IOREF and 5V pin of
    the shield. You must measure an inifinite resistance between these two pins.

  6. after the modification connect the shield with just 3 wires to the ‘due’
    GROUND - 5V - IOREF and measure the voltage on the A0 shield pin
    this voltage must span from 0V to 3.3V depending by the button you hit.

  7. check again all the work you done before inserting the shield on the ‘due’
    be sure you have not short-circuited any pins solding the new resistor.