I have written a C++ driver for the command 20×4 LCD using i2c on the Raspberry Pi. These LCDs are based on HD47780. Most examples I found are using the pins directly and not through i2c. I2c uses a lot less pins than directly connecting the LCD. I originally wrote this in C and then decided to convert to C++, as I am re-learning C++!