So I ordered a Chinese (Shenzen) ReprapDiscount Full Graphic Smart Controller by bigtree-tech.com (says so on the board) with a clone RAMPS 1.4 kit. The RAMPS + Arduino Mega 2560 combination worked fine based on the serial monitor log, but I just couldn't get the LCD on the controller working with Marlin.
I spent about three days trying to figure out what was wrong, and couldn't find any conclusive solutions online. People apparently found solutions but never quite elaborated on them, which is quite typical on online support forums. To help you others out, I've now compiled all the information I could find about issues with the bigtree-tech.com smart controller LCD and the solution I finally ended up finding. The LCD in question is a red PCB with the LCD itself mounted on a green PCB.
First, make sure you've set up the thing correctly so as to make sure it's not a user error:
1. Make sure you've selected the right board and display models in the Marlin configuration.h.
The correct define option for this LCD (ST7920) is the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER. You'll also want SDSUPPORT and your MOTHERBOARD is chosen correctly.
2. Make sure you've added #include <U8glib.h> to the "Marlin" Arduino sketch (main source page).
It's strange that the source does compile without it. Note: Marlin 1.1.0-RC6 had problems with the U8GLIB that the new Arduino software offers to download for you (coulnd't find files and so wouldn't compile either). v1.14 and v.1.18.1 from the U8GLIB website worked fine once unzipped into the Arduino installation's "libraries" folder. Remember to actually upload the software to the Arduino.
3. Make sure you've connected the EXP1 and EXP2 cables correctly.
On my RAMPS pinout board for the smart controller, EXP1 was the one on the extruder side of the RAMPS 1.4 and EXP2 closer to the AUX2 and AUX3.
If you still couldn't get it working, you're probably looking at a hardware problem related to sloppy manufacturing. In order of seriousness:
4. If the screen doesn't turn on at all, you've probably run into a bad set of cables. This issue is quite well covered online; many of the bigtree-tech.com smart controllers actually had the cables inserted the wrong way into the connectors. To rectify this, carefully cut or file off the directing tabs on the connectors (on one end, not both ends) so you can insert them the "wrong way". If this doesn't help, swap the cables with each other and see if one of them is broken. If you have access to them, try to change the cables entirely or at least test the cables with a voltmeter of LED circuit. You know when you've hit the right connection when the LCD lights up and the Arduino serial monitor tells you it's recognized an SD card (that you've inserted).
5. If the screen does turn on but still displays no graphics, try turning the trimpot to the lower left of the LCD (using fingers or a flat screwdriver). The relevant increments are about 20-30 degrees (it only turns about 200). You might be able to hit a "sweet spot" where the graphics appear.
If none of the above worked, you're going down the rabbit hole. In order of complexity:
6. Try soldering a resistor between pin holes 2-3 on the back of the red graphic controller PCB. Orienting the board so that the EXP connectors are "down", the relevant pin holes are the second and third leftmost ones from the left edge of the board. An image of the pin location has been provided previously (jpg). Resistors that have worked for people range from 270 to 3000 ohms, with about 500-1000 being the average success resistance. After installing the resistor, try adjusting the trimpot in front again to see if you can find a sweetspot.
7. Adjust the hidden trimpot. The red and green PCBs aren't actually meant to go together like they are, but connected with a ribbon cable. This creates a problem with adjusting the LCD circuit that apparently often comes with entirely absurd factory settings. The *actual* adjustment trimpot is on the back of the green PCB, and is quite unuseable when sandwiched between the red and the green ones. You want to get to this trimpot (which takes a small screwdriver), and you basically have three options in doing so:
8. If you did get the blank square thing going on (LCD displays something), but Marlin doesn't show up, you've got a problem with the pins and/or traces somewhere between the Arduino pins 16,17, or 23 and the LCD circuit. Basically, what I did was carefully melt the existing solder on every soldered point between these endpoints to reflow them. This included the RAMPS board's connections, the LCD pinout board for the EXP cables and the components on the way. The solder work is apparently often horrendous on these boards. Some of the components are very small and may even lack enough solder, while larger parts can have excessive amounts. It seems they didn't test these things. This step is going to take some time, but it finally got my LCD working perfectly.
9. Your LCD controller is beyond hope or the problem is elsewhere. Give up or redo step 8 and check if the PCB components work as they should.
Greetings from Helsinki, Finland.
I spent about three days trying to figure out what was wrong, and couldn't find any conclusive solutions online. People apparently found solutions but never quite elaborated on them, which is quite typical on online support forums. To help you others out, I've now compiled all the information I could find about issues with the bigtree-tech.com smart controller LCD and the solution I finally ended up finding. The LCD in question is a red PCB with the LCD itself mounted on a green PCB.
First, make sure you've set up the thing correctly so as to make sure it's not a user error:
1. Make sure you've selected the right board and display models in the Marlin configuration.h.
The correct define option for this LCD (ST7920) is the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER. You'll also want SDSUPPORT and your MOTHERBOARD is chosen correctly.
2. Make sure you've added #include <U8glib.h> to the "Marlin" Arduino sketch (main source page).
It's strange that the source does compile without it. Note: Marlin 1.1.0-RC6 had problems with the U8GLIB that the new Arduino software offers to download for you (coulnd't find files and so wouldn't compile either). v1.14 and v.1.18.1 from the U8GLIB website worked fine once unzipped into the Arduino installation's "libraries" folder. Remember to actually upload the software to the Arduino.
3. Make sure you've connected the EXP1 and EXP2 cables correctly.
On my RAMPS pinout board for the smart controller, EXP1 was the one on the extruder side of the RAMPS 1.4 and EXP2 closer to the AUX2 and AUX3.
If you still couldn't get it working, you're probably looking at a hardware problem related to sloppy manufacturing. In order of seriousness:
4. If the screen doesn't turn on at all, you've probably run into a bad set of cables. This issue is quite well covered online; many of the bigtree-tech.com smart controllers actually had the cables inserted the wrong way into the connectors. To rectify this, carefully cut or file off the directing tabs on the connectors (on one end, not both ends) so you can insert them the "wrong way". If this doesn't help, swap the cables with each other and see if one of them is broken. If you have access to them, try to change the cables entirely or at least test the cables with a voltmeter of LED circuit. You know when you've hit the right connection when the LCD lights up and the Arduino serial monitor tells you it's recognized an SD card (that you've inserted).
5. If the screen does turn on but still displays no graphics, try turning the trimpot to the lower left of the LCD (using fingers or a flat screwdriver). The relevant increments are about 20-30 degrees (it only turns about 200). You might be able to hit a "sweet spot" where the graphics appear.
If none of the above worked, you're going down the rabbit hole. In order of complexity:
6. Try soldering a resistor between pin holes 2-3 on the back of the red graphic controller PCB. Orienting the board so that the EXP connectors are "down", the relevant pin holes are the second and third leftmost ones from the left edge of the board. An image of the pin location has been provided previously (jpg). Resistors that have worked for people range from 270 to 3000 ohms, with about 500-1000 being the average success resistance. After installing the resistor, try adjusting the trimpot in front again to see if you can find a sweetspot.
7. Adjust the hidden trimpot. The red and green PCBs aren't actually meant to go together like they are, but connected with a ribbon cable. This creates a problem with adjusting the LCD circuit that apparently often comes with entirely absurd factory settings. The *actual* adjustment trimpot is on the back of the green PCB, and is quite unuseable when sandwiched between the red and the green ones. You want to get to this trimpot (which takes a small screwdriver), and you basically have three options in doing so:
- Unsolder and detach the pins holding the PCBs together and replace the connection with an IDE cable or similar. Warning: Labour-intensive
- Drill a 2-3 mm diameter hole at a very specific spot on the red PCB, avoiding the circuit traces on both sides of the PCB, and use a screwdriver to turn the trimpot through that hole. Warning: you can really screw this up.
- Get some kind of tool like micro-pliers with bent "fingers" to awkwardly turn the trimpot screw quite tediously between the two PCBs. Warning: awkward and frustrating
8. If you did get the blank square thing going on (LCD displays something), but Marlin doesn't show up, you've got a problem with the pins and/or traces somewhere between the Arduino pins 16,17, or 23 and the LCD circuit. Basically, what I did was carefully melt the existing solder on every soldered point between these endpoints to reflow them. This included the RAMPS board's connections, the LCD pinout board for the EXP cables and the components on the way. The solder work is apparently often horrendous on these boards. Some of the components are very small and may even lack enough solder, while larger parts can have excessive amounts. It seems they didn't test these things. This step is going to take some time, but it finally got my LCD working perfectly.
9. Your LCD controller is beyond hope or the problem is elsewhere. Give up or redo step 8 and check if the PCB components work as they should.
Greetings from Helsinki, Finland.