RepRapDiscount Full Graphic Smart Controller
English • العربية • български • català • čeština • Deutsch • Ελληνικά • español • فارسی • français • hrvatski • magyar • italiano • română • 日本語 • 한국어 • lietuvių • Nederlands • norsk • polski • português • русский • Türkçe • українська • 中文（中国大陆） • 中文（台灣） • עברית • azərbaycanca •
- 1 Full Graphic Smart Controller
Full Graphic Smart Controller
This Full Graphic Smart Controller contains a SD-Card reader, a rotary encoder and a 128 x 64 dot matrix LCD display.
The RepRapDiscount_Smart_Controller is a similar design with a 20x4 character based display.
This display board is intended to provide an easy and simple solution to interact with a 3D printer. Given that many of the 3D printer's mainboards are based on the RAMPS design this display board is supported by many other mainboards.
When using a RAMPS board the Full Graphic Smart Controller is simple to connect using the "smart adapter" which connects directly to an Arduino Mega 2560. The Full Graphic Smart Controller comes with a 12864 (128x64) LCD.
Depending on the vendor you may find boards using an ST7920 IC Driver or a ST7565 IC Driver. Boards using a DOG-M128 Display use a ST7565 IC Driver. The more common and generic boards use some flavor of a 12864 LCD with the ST7920, this is the case with most board you find in online stores.
The original design supports the 8bit Parallel display interface and a 4bit serial display interface, yet all of the common E3 Printer firmwares only support the 4bit Serial interface which only uses one pin for data, freeing more pins for other uses. The preference of serial is mainly due to the use of the [U8G library](https://github.com/olikraus/u8glib) that implements the graphic support in these firmwares.
This display board is supported by the most popular 3D Printer firmwares, yet differences in the LCD Drivers used and others may dictate the level of support in a given 3D printer mainboard and firmware combination. See connection for more details.
Original Design and Clones/Variants
The original design supports the 8bit Parallel interface and a 4bit serial interface. Many clones or variants only support the serial (SPI) interface.
Variants of the design may have fans or remove the SD-Card, among other changes.
Some budget clones may have issues due to timing constraints with the display used.
Depending on the vendor you may find boards using an ST7920 IC Driver a ST7565 IC Driver or other. Boards using a DOG-M128 Display use a ST7565 IC Driver. The more common and generic boards use some flavor of a 12864 LCD with the ST7920, this is the case with most boards you find in online stores.
The board has two 14 pin (2 row 2.54mm) pitch box connectors marked EXP1 and EXP2.
The following figure shows the pinout mapping to an Arduino Mega 2560:
When used with a RAMPS board the "Smart Adapter" provides an easy connection with the RAMPS. The following figure shows the pinout mapping to an Arduino Mega 2560:
Clones and other manufactures may provide different connections, in particular models without SD-Card or models supporting only the SPI/Serial interface (most common)
As firmware we used Marlins' sources, to update the firmware in the future you just need an Arduino board, so you are good to go ;)
Pictures of a Full Graphic Smart Controller made by RepRapDiscount.com
Support in Marlin Firmware V1 (new)
The basic requirement to add support in the Marlin Firmware is to enable the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER in the "Configuration.h”. For more details check Marlin's [page](https://marlinfw.org/docs/configuration/configuration.html) on how to configure the firmware, see the LCD section.
Open the "Configuration.h” file and find the following line:
Remove the comment character "#" to read:
After build and upload your firmware to your printers Arduino or mainboard as specified in the firmware documentation.
By default Marlin will use the U8G/DOGM libraries to handle the Smart Controller and asume that the LCD driver is the ST7920.
The firmware defines other constants for some popular variants of the RepRap Discount Full Graphic Smart Controller that may use another driver or has a different PIN/layout or other requirement.
To enable the correct LCD in the firmware it is important that you identify if your "Smart Controller" is indeed using the ST7920 driver or if it has a different pin requirement. If that's not your case you need to see if the firmware already has support for your "Smart Controller" and select it accordingly.
#include "pins_RAMPS.h"near the top. In addition to checking the "pins_XXXX.h" file corresponding to your mainboard, its a good idea to check the base file to see if your smart controller is supported.
Another important aspect of compatibility is dictated by your printer mainboard it self. If you board has a dedicated LCD connector you have to check at minimum two things:
Ensure that the connector pin out matches the cable or adapter that you are using. In many instances the supplied cable or adapter is for a particular board.
Ensure that the pins on the board can actually drive the LCD (connected to a pin that does the required function).
For example a connection that shares the SPI with the an ST7920 LCD will not work and produce garbage on the LCD. (The ST7920 can not share an SPI/Serial interface).
Open Source Files
You can find the open source files here: http://forum.reprapdiscount.com/forums/oss/
Where to get it?
If you don't have the mood to build it yourself you can just buy from
All parts are licensed under Attribution - ShareAlike.
- Some versions of this board have the notched connectors the wrong way around. If your controller only flickers and beeps, cut off the notches on the cables and insert them upside down.
- Some clones of this board use really slow LCD displays so their signal timings need adjusted.
- The symptoms are that the display gets slightly corrupted. (which can also be cables to long)
- In current versions of marlin (1.1.9) add the following to configuration.h to override the default settings.
- add "#define ST7920_DELAY_1 DELAY_NS(0)"
- add "#define ST7920_DELAY_2 DELAY_NS(0)"
- add "#define ST7920_DELAY_3 DELAY_NS(63)" // this is the defaults for a 16mhz processor (ie a mega2560)
- This is used as follows.
- For each bit that is sent over SPI
- Set the clock pin low and wait ST7920_DELAY_1
- Set the data pin and wait ST7920_DELAY_2
- Set the clock pin high and wait ST7920_DELAY_3
- Slower LCD's seem to need ST7920_DELAY_3 increased.
There are some possible hacks to modify the display.