Hi all,
I just wanted to note that I was able to get this LCD working with both the toolbox code suggested above and with the ?LiquidCrystal library http://microliquidcr...l.codeplex.com/. The former has support for shift registers, scrolling text, and special characters.
I had to rebuild the ?LiquidCrystal source for the 4.2 framework to get working. I still have intermittent problems with the screen initializing both lines of the LCD and sometimes it appears to want to go into 8bit mode corrupting the text, but it generally works after a reset or two.
PS - Although the LCD is capable of 8bit addressing the shield isn't wired up for it. Hope this saves someone the time that I wasted troubleshooting the library.
Edit for some code
var LcdProvidor = new GpioLcdTransferProvider( Pins.GPIO_PIN_D8, Pins.GPIO_PIN_D9, Pins.GPIO_PIN_D4, Pins.GPIO_PIN_D5, Pins.GPIO_PIN_D6, Pins.GPIO_PIN_D7 ); //Debug.Print(LcdProvidor.FourBitMode.ToString()); var lcd = new Lcd(LcdProvidor); lcd.Begin(16, 2); //Creating custom characters (Smiley face and gimp) byte[] buffer = new byte[] { 0x07, 0x08, 0x10, 0x10, 0x13, 0x13, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x1C, 0x02, 0x01, 0x01, 0x19, 0x19, 0x01, 0x01, 0x10, 0x10, 0x12, 0x11, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x01, 0x01, 0x09, 0x11, 0x01, 0x01, 0x02, 0x1C, 0x15, 0x15, 0x0E, 0x04, 0x04, 0x0A, 0x11, 0x11, 0x04, 0x04, 0x0E, 0x15, 0x04, 0x0A, 0x11, 0x11 }; // Load custom characters to display CGRAM for (int i = 0; i < 8; i++) { lcd.CreateChar(i, buffer, i * 8); } while (true) { lcd.Clear(); // Print the special characters with the face lcd.Write(new byte[] { 0x00, 0x01, 0x02 }, 0, 3); lcd.Write(" .NET Micro"); // Move to second line lcd.SetCursorPosition(0, 1); // Print the special characters with the face lcd.Write(new byte[] { 0x03, 0x04, 0x05 }, 0, 3); lcd.Write(" Framework"); Thread.Sleep(5000); lcd.Clear(); const string message = "Netduino Plus 2!"; // Let gimp write the message for (int i = 0; i < message.Length; i++) { lcd.SetCursorPosition(i, 1); lcd.WriteByte((byte)(((i % 2) == 0) ? 0x06 : 0x07)); lcd.SetCursorPosition(i, 0); lcd.Write(message[i].ToString()); Thread.Sleep(200); lcd.SetCursorPosition(i, 1); lcd.Write(" "); } Thread.Sleep(5000); lcd.Clear(); lcd.SetCursorPosition(16, 0); lcd.Write("www.netduino.com"); lcd.SetCursorPosition(16, 1); lcd.Write("www.netduino.com"); for (int i = 0; i < 40; i++) { lcd.ScrollDisplayLeft(); Thread.Sleep(400); } }