Introduction: RGB Mod for 20x4 LCDs for Prusa Style Printers

About: Just enjoy learning new things and making in general.

I was seeing posts with people modding their LCD screens on their prusa i3 printers and wanted to do the same, however I could not decide on a color.

So enter Adafruit LCD module, with an adjustable RGB LCD!

Step 1: Obtain the Parts

If you are proficient with de-soldering, and want to save some money, you can get just the RGB LCD module from Adafruit. Otherwise you may want to add in the LDO LCD board from Printed Solid. Optionally add in an arduino clone and hookup wire. Note you can source these from anywhere, I am just listing the Adafruit entries for convenience.

RGB backlight negative LCD 20x4 + extras - RGB on black [https://www.adafruit.com/product/498]

LDO PRUSA MK2/MK2.5/MK3 DISPLAY CONTROLLER NO LCD [https://www.printedsolid.com/products/ldo-prusa-mk2-mk2-5-mk3-display-controller-no-lcd]

Optional: Adafruit Metro Mini 328 - Arduino-Compatible - 5V 16MHz [https://www.adafruit.com/product/2590]

Optional: Hook up Wire [https://www.adafruit.com/product/3111]

Step 2: Remove a Single Pin From the LCD Board

Due to the RGB LCD module using common cathode for the RGB pins, we need to remove the single pin that provides power for the old screen. This will not be used at all going forward.

If this is left on, your screen will always have the Red LED illuminated.

Step 3: Add in Wiring for the RGB Colors and Solder Up the Display

We need to add in wiring for RGB controls on the Adafruit display. Make the cables long enough, they need to be routed down below the LCD module, and handled from there. Do your best to keep the cables close to the board.

Pin 16 is for the Red, pin 17 is for the Green, and pin 18 is for the Blue. With this LED panel, all of these are connected to an internal resistor, and ready for a 5V PWM signal!

Now solder up the rest of the pins for the LCD. Again make sure your custom RGB wires are tight to the back of the LCD panel, and not pinched by anything else.

Step 4: Optionally Add in Power Wires for a Microcontroller

Add in a positive and negative wire for a microcontroller, if that is how you want to drive the LCD.

Careful add two wires, pin 1 is negative, pin 2 is positive.

Step 5: That Is All

That is it. You just need to PWM drive the RGB pins and reconnect the LCD to the printer.

I am personally running mine with a small Arduino clone. Just make sure you can PWM drive 3 pins at 5V.

I am eventually going to disable "hyperbeam" mode and do something that allows me to set the color on either preference or event.

Bonus: Arduino code for RGB Fading, aka hyperbeam, aka flair mode:

// Borrowed from https://learn.adafruit.com/character-lcds/rgb-backlit-lcds

#define RED 3 #define GREEN 5 #define BLUE 6

int brightness = 255;

void setup() { pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); brightness = 100; }

void loop() { for (int i = 0; i < 255; i++) { setBacklight(i, 0, 255-i); delay(5); } for (int i = 0; i < 255; i++) { setBacklight(255-i, i, 0); delay(5); } for (int i = 0; i < 255; i++) { setBacklight(0, 255-i, i); delay(5); } }

void setBacklight(uint8_t r, uint8_t g, uint8_t b) { // normalize the red LED - its brighter than the rest! r = map(r, 0, 255, 0, 100); g = map(g, 0, 255, 0, 150); r = map(r, 0, 255, 0, brightness); g = map(g, 0, 255, 0, brightness); b = map(b, 0, 255, 0, brightness); // common anode so invert! r = map(r, 0, 255, 255, 0); g = map(g, 0, 255, 255, 0); b = map(b, 0, 255, 255, 0);

analogWrite(RED, r); analogWrite(GREEN, g); analogWrite(BLUE, b); }