lcd.prints corrupts data

I have an Uno acting as a receiver, using the virtualwire library.
A sensor transmits a 4 character message to the receiver.
The receiver “decodes” the message and it is posted to an online database.
Without LCD, it works as expected.
When I add an LCD, everything printed to the LCD displays correctly and the serial monitor output display correctly, but the posted data is corrupted.

My tests have shown the following :

  1. Comment out everything to do with the LCD - everything works.
  2. Include the LCD libraries - everything works.
  3. Initialise the lcd - everything works.
  4. Switch the lcd backlight - everything works.
  5. Do an lcd.print() - the online data is corrupted.

This is the code for "decoding the message :

void loop()
  {
    String sensorReport;
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    if (vw_get_message(buf, &buflen)) // Non-blocking
      {
     
//      Print received message from buffer
	for (int i = 0; i < buflen; i++)
	  {
            char c = (buf[i]);
            sensorReport += c;
           }
       
        String sensor = sensorReport.substring(0,3);
        String activity = sensorReport.substring(3,4);
      }
  }

Yes, I am using Strings, because they are the only method I can get to work.

How can I manipulate the sensor and activity variables so as not to be influenced by printing to the lcd?

TIA for any help.

The first thing to do is to post your whole program or a working example that exhibits the problem. How much memory does your program use ? Which board are you using ? What problems did you have when you tried to use arrays of chars rather than Strings ?

Yes, I am using Strings, because they are the only method I can get to work.

Is this meant to be an ironic comment considering that your program does not actually work ?

No need to post the WHOLE program

Just report on this : How do you turn the backlight on - hardware or software ?

After you initialize your LCD (?) , hopefully in Setup what do you display after these commands ( in Setup too) COMMON to ANY LCD irregardless of "board"

LCD class variable .clear(); LCD class variable. print("Hello 1234567890 ");

Still not the hang of [code][/code] tags, I see, Vaclav. {sigh}

No need to post the WHOLE program

Bullshit.