Read data from HD44780

Issue #79 new
vtech created an issue

What would you say if the library offer a few methods to read something back from the display controller? Like a busy flag and address counter or a character at the specific column and row?

I have some specific case in my project where reading a character at specific column and row helped me a lot, so I can provide a solution for this. In my project I'm building a small HiFi system. It has a modular approach. The main segment is a preamplifier, amplifier, FM tuner, 4x20 LCD (I'm using new-liquidcrystal library to control it from I2C port expander), Arduino Uno, power supply and some input elements (like switches, potentiometers, and so on). I have a second segment which is a phonograph that is able to play the vinyl plates. It is 12V powered from the main segment. The LCD works fine until I switch on the phonograph. When I switch on the phonograph the motor starts to work and it consumes some power (or there is some power spike) and the LCD gets totally blank but it still response to 4-bit data sent with I2C mode. I need to call begin() again and upload once again my custom characters (it looks like they have been destroyed in the CGRAM) to make it work again. I know that this is more related to the power supply but I can check the character at the specific location and use it as a workaround to make a decision if I should reinit the display.

Comments (2)

  1. Francisco Malpartida repo owner

    That could be an option, though most display configurations do not support the capability to read back as they are hard wired. It does have several implications for those displays.

    For the problem you are describing I would suggest that you use several decoupling caps. A large for the transients and another one for filtering noise. You can place them in the LCD's power rails. I am not sure if what you are proposing will work. It all depends on what the LCD does with these power transients and the contents in memory.

  2. vtech reporter

    Thanks for the tip about the capacitors. I will try it.

    In the mean time I tried the software solution with reading the character at specific LCD position. Reading data seems to works correct. For now I'm using this functionality in my project as a workaround for the power supply issue. If you want you can take a look at my read_data_#79 branch. I just have modified LiquidCrystal_I2C because I'm using I2C port expander. At least I have learned something more about HD44780 and new-LiquidCrystal library.

  3. Log in to comment