Stealing data sent to an LCD

There is a problem with your logic.

You don't seem to know/test to see when the screen is being updated.
I see you just have a loop that is constantly reading the screens data pins.
You need to work out how to be in sync with the data being send to the screens processor.
You then need to decode what the messages being sent to the screen is,
is it change to cursor location in screen memory or is it an update/change to the value in screen memory.
The character codes on page 15 of http://www.adafruit.com/datasheets/TC1602A-01T.pdf might help decoding the text.

Also reading arduino-0022\libraries\LiquidCrystal\LiquidCrystal.cpp may help in working out what's going on.

http://www.adafruit.com/datasheets/HD44780.pdf Page 5 might also help.
Pin 6 E - MPU Starts data read/write that might also be the one to look at as it's this start you want to catch.
Also Page 8

Busy Flag (BF)
When the busy flag is 1, the HD44780U is in the internal operation mode, and the next instruction will not
be accepted. When RS = 0 and R/W = 1 (Table 1), the busy flag is output to DB7. The next instruction
must be written after ensuring that the busy flag is 0.

A good way to debug your routine is to have one arduino running the helloworld example and a 2nd arduino running your snoop hack.
That way you cut down on the random variables of getting it to work with a random device by getting it going with someone simple.

I am guessing you might be able to get timing/sync/update notification by monitoring pins 4 or 5 of the LCD, but NB that a guess.

Also when displaying your 8 bit codes include the leading 0's so 11100 is 00011100 make it easier to see what's going.

So your current returns where and I think decodes to; (base on page 17 character codes from http://www.adafruit.com/datasheets/HD44780.pdf)

0011 1000 - 8

0011 1000 - 8

0011 1000 - 8

0011 1000 - 8

0001 1100 - either blank or custom character 5a??

0001 1000 - either blank or custom character 1a?? not sure

0011 1000 - 8

0001 1100 - ...

0001 1000

0011 1000

0001 1000

I reserve the rigth to be wrong :slight_smile: