bask185:
NO
hooking up the logic analizer and making that list took me under two hours, and it allowed me to control the LCD without any library other than the Wire.h.
Now I understand how that works, I would propably be able to create every possible random character in another 2 hours
2 hours of reverse engineering plus another 2 hours needed to reverse engineer how to send the rest of the characters is quite a bit of time.
From these comments, it sounds like you may have figured out how to send some characters to the LCD using this specific i2c backpack, but it doesn't sound like the interface is fully understood.
What about initialization? The LCD must be properly initialized into 4 bit mode before any characters can be sent. Then what about LCD commands like being able to position the cursor, or clearing the screen?
If how the PCF8574 output port was wired up to the LCD and how hd44780 4 bit mode worked was understood, then it should only take a few seconds to be able to come up with the bytes needed to send to the PCF8574 output port to control the LCD. This would include any character as well as any LCD command.
And this goes back to my saying that in order to write software to control h/w the h/w and its interfaces must be understood.
I can understand a lack of programming skills can make it difficult to understand a software library, but understanding the LCD and backpack interface h/w which is how the PCF8574 output port is wired up to the hd44780 pins and reading up a bit on how the hd44780 interface works to understand its 4 bit mode does not require looking at any s/w or understanding any s/w libraries.
It requires understanding the i2c backpack hardware and how it interfaces to the LCD.
The backpack uses a PCF8574 i/o expander to drive the hd44780 pins.
It will require examining the actual LCD backpack PCB to figure out how the output port pins are wired up, specifically pins 4,5,6,7,9,10,11 and 12.
(this takes maybe 5 minutes, and may require an ohm meter)
And then reading the hd44780 spec to get a grasp on the how the control signals work, how commands and data are sent to the LCD, and then the initialization sequence needed. In this case how to reliably put the LCD into 4 bit mode.
Time for this may vary but if even if you are not very familiar with data-sheets an hour should be enough time to get a good grasp on how the part works and the signal pins.
To play at this level, then learning how to read datasheets and understanding how the hardware works is a must.
For this project, once how the PCF8574 is wired and hd44780 4 bit mode is understood, then there would be no need to look at an i2c LCD library as how the interface worked would be understood.
And then it would be obvious what to send over i2c to control the LCD, which would allow writing the low level s/w routines to send the bytes and then the higher level API functions that sit on top of that to send characters or commands to the LCD - which is what the i2c lcd libraries do.
But if I really need to know how the I2C bytes translates into lcd instructions I just hook up 7 of the 8 channels of my logic analizer on my lcd screen and see how it works. And after that has been done, than I would recommend to take a dive in those complicated librariers. This is 100x more easy than what you suggest.
One can learn more out of hardware exercises than from complicated libraries. It sure take way less time to use a logic analizer and write down your findings than to entirely comprehend 3-4 different libraries which might take god knows how many days if not weeks.
This is the wrong approach, particularly in this case where documentation is readily available. While hooking up probes and attempting to reverse engineer the interface can work for certain situations, it should be a mechanism of last resort since it does not really ever offer the ability to truly know and understand the interface.
And given your previous comments it seems that the even after this initial reverse engineering exercise, it is still not understood how to control the LCD for characters and commands.
Reverse engineering is also often much more time consuming than simply reading the documentation/specifications.
This methodology also cannot ever offer a complete picture of how the interface fully works, nor will it provide any information related to initialization or timing requirements/boundaries, all of which are in the hardware specifications.
Also, keep in mind that by looking at signals for a working system you are only examining what THAT particular system is doing.
It is a specific implementation that may or may not be following the specification and it may or may not be able to provide enough information to grasp the real full interface and its timing requirements.
That is why reverse engineering can be so difficult and often leads to less than optimum solutions.
In this case it is simply not needed, as you have direct access to the backpack to easily determine the design and its wiring and hd44780 specs are readily available for free from the internet.
Once the interfaces are understood, that knowledge could be used for other situations/projects.
It would directly transfer to know how to use a different i2c backpack that used the same PCF8574 but was wired differently, or even another interface like a shift register implementation.
--- bill