LCD - Never bet against Programmers being Lazy.

A project log for Cricut Hacking

Putting Marlin 2.x on the Cricut Expression because, well, why not? Also, some reverse engineering on CRV001

J.C. NelsonJ.C. Nelson 09/29/2022 at 02:170 Comments

I SHOULD have been tackling the steppers. Or the endstops. But what I didn't understand was why the FreeExpression project didn't use the LCD that comes with the hardware. A quick look at the FreeExpression code gave me the pinout for a modified (to use a different LCD) connector, and looking at the OLED code for the cake version, it used SPI in a very simple mode.

Now, a quick look at the cake, expression, CRV001 and expression v2 motherboard said these things were all closely related, and I made a bet that no matter what, they were probably STILL using SPI for the other LCDs.

If you already have a working layout for the motherboard, don't mess with it just to change LCDs. So I did the most boring thing possible.

I installed u8g's library in Arduino, opened the hello world example, and looked at the supported devices.

The Expression V1's screen is yellow on black, basically a black and white LCD. There's simply not enough free pins in the header for it to be running in parallel. It was unlikely to be even a four bit.

With a little trial and error, I hit the right combination, using MegaCore's pin names (PIN_PE7, for example). And the LCD booted up. I now knew that the LCD for the Expression was a U8GLIB_NHD27OLED_BW supported device.

Adding a new display type to Marlin isn't terribly well documented, but there's a commit in my git repo -

Shows most of how it's done.

Keyboard? No. no, no.  But LCDs working, that was a start.