I was looking to upgrade my electronics and took the opportunity to play around with getting an LCD working.
I picked up a
RAMBo, a
Full Graphic Smart Controller, and
this adapter.
On the software side, I fetched the latest release of Marlin (June, I didn't do a get of the current working set, just in case something might have broken it), and modified the proper files as prescribed on
this Wiki page.
When I plugged it all in, I was getting feedback from pushing the encoder and the SD card was working. But the screen was blank. I traced the pins on the LCD to pins on the RAMBo and found that:
LCD_E is connected to EXT-2 pin 9 (PJ2, pin #65)
LCD_RW is connected to EXT-2 pin 7 (PG3, pin #28)
LCD_RS is connected to EXT-2 pin 5 (PG4, pin #29)
So I modified pins.h for:
#define LCD_PINS_RS 29
#define LCD_PINS_ENABLE 28
#define LCD_PINS_D4 65
to line up with the schematic of
the display here.
I noticed that on the Smart Controller Schematic, the header pins were reversed to what I had and verified worked with power and the buzzer (although M300 doesn't work as-is, confirmed the buzzer works based on the feedback of clicking it as implemented in lcd_implementation_quick_feedback()).
Suspicious, I hooked up a logic analyzer and noticed that the state of these pins never change!
While I have some electronics experience, and some AVR experience, and some software experience (just enough of each to be dangerous!), I have very little experience with the Arduino software suite and the software patterns already established in Marlin.
I'm thinking the pins in question are not configured as output, but I can't quite figure out where such things are actually done.
Has anyone been down this path before and can save me from trying to trace the code in the Arduino UI?