SerLCD - can't get rid of splash screen

I have a SPARKFUN SerLCD(LCD-14072) and I set up a custom splash screen but cannot get rid of it.

I have tried lcd.disableSplash() but it does not seem to work.

Here is the setup code

void setup()
{
  // following added for SPARKFUN SerLCD LCD-1402
  Wire.begin();
  lcd.begin(Wire);
  Wire.setClock(400000); //Optional - set I2C SCL to High Speed Mode of 400kHz

  lcd.setBacklight(0, 255, 0); //Set backlight to GREEN
  lcd.setContrast(5); //Set contrast. Lower to 0 for higher contrast.
  //lcd.clear(); //Clear the display - this moves the cursor to home position as well
  //lcd.print("   PSDP LLC   ");
  //lcd.setCursor(0, 1);
  //lcd.print(" xxxxxxxxxxx");
  
  //lcd.saveSplash(); //Save this current text as the splash screen at next power on

  //lcd.enableSplash(); //This will cause the splash to be displayed at power on
  lcd.disableSplash(); //This will supress any splash from being displayed at power on

  //added for ADAFRUIT DS3231 RTC
  #ifndef ESP8266    
    while (!Serial); // for Leonardo/Micro/Zero
  #endif

  pinMode(kill, OUTPUT);
  
  Serial.begin(115200);
  Serial.println("Playing With Fusion: AS3935 Lightning Sensor, SEN-39001-R01");
  Serial.println("beginning boot procedure....");
  

   //following added for ADAFRUIT DS3231
   if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }
   //following added for ADAFRUIT DS3231
  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
  
  // setup for the the I2C library: (enable pullups, set speed to 400kHz)
  I2c.begin();
  I2c.pullup(true);
  I2c.setSpeed(1); 
  delay(2);
  
  lightning0.AS3935_DefInit();   // set registers to default  
  // now update sensor cal for your application and power up chip
  lightning0.AS3935_ManualCal(AS3935_CAPACITANCE, AS3935_OUTDOORS, AS3935_DIST_EN);
                                 // AS3935_ManualCal Parameters:
                                 //   --> capacitance, in pF (marked on package)
                                 //   --> indoors/outdoors (AS3935_INDOORS:0 / AS3935_OUTDOORS:1)
                                 //   --> disturbers (AS3935_DIST_EN:1 / AS3935_DIST_DIS:2)
                                 // function also powers up the chip
  Serial.println("HERE");                
  // enable interrupt (hook IRQ pin to Arduino Uno/Mega interrupt input: 0 -> pin 2, 1 -> pin 3 )
  attachInterrupt(0, AS3935_ISR, RISING);
  lightning0.AS3935_PrintAllRegs();
  AS3935_ISR_Trig = 0;           // clear trigger
  Serial.println("FILE = as3935_lightning_nocal_LCD_wjl");

  //lcd.clear();
  //all_off();    
}

Hi Bill,

That should work just fine. Try power cycling the display after disabling the splash screen. All of the custom settings (backlight color, contrast, enabling/disabling splash screen, etc.) are saved to the display’s non-volatile memory so there is no need to set those parameters in your void setup after you have set them once. That will also prevent all the other printouts (contrast set, splash on/off, etc.) from printing on powerup since those functions will, by default, send a response over the display to confirm they have been properly configured.

Let us know if you have any other questions about the SerLCD and we would be happy to help.

I have lcd.disableSplash(); in setup but the splash screen still shows so It is not clear how this works. Can you tell me what to change in my setup(included in original post) to really get rid of the splash

What version firmware is your LCD running? You may not have the latest version.

If you send:

lcd.write('|');
lcd.write(',');

That should flash the the version number up on the screen for about 1/2 a second. I believe 1.2 is the current version and the disable splash command is working in 1.2. If you send those commands and get no response, you’re running firmware v1.0

Yep: I have version 1.1 in a LCD I just bought from SPARKFUN.

The current version is 1.3 .

Why is SPARKFUN shipping products with out of date firmware??? Would be nice to at lease include a note saying it should be checked.

Hi Bill.

It looks like the library commands:

lcd.enableSplash(); 
lcd.disableSplash();

didn’t exist in firmware version 1.1 and were added in version 1.2.

You’re correct, we’re currently at version 1.3 and if you update the firmware to v1.3 in your display by following the directions in the [troubleshooting section of the hookup guide, the lcd.disableSplash(); command in your code will function correctly. V1.1 only had the ability to toggle it on and off but not explicitly turn it on or off.

For your question about what firmware version we’re shipping: We ship the most current firmware version we have at the time of manufacture and your display was made when v1.1 was the most current. (Parts are not made at the time of order.) When an update is made to the firmware, we don’t pull all the stock and re-flash the latest version as that would consume a lot of labor and we would need to raise the price of the display to compensate. It is easy for users to do a firmware update themselves if they need to though.

The hookup guide gets updated as new firmware is released but we don’t take into account that customers might have a previous version. I’ll ask our tutorials team to put a notice up on the hookup guide to alert users to that fact to prevent any confusion.](https://learn.sparkfun.com/tutorials/avr-based-serial-enabled-lcds-hookup-guide/troubleshooting)