   lcd.write(0x58);
 }
 
+//does not work with zeros e.g. needs at least one dot drawn on each row
+void createCustomSerialChar(SoftwareSerial lcd, int pos, byte data[]) {
+  lcd.write(0xFE);
+  lcd.write(0x4E);
+  lcd.write((uint8_t)pos);
+  for(int i = 0; i < 8; i++) {
+    lcd.write(data[i]);
+  }
+  delay(10); 
+}
+

  lcd.write(255);
  delay(10);      

  //lcd.write(0xFE);
  //lcd.write(0x58);

  // create a custom character
  // fill 1  
  lcd.write(0xFE);
  lcd.write(0x4E);
  lcd.write((uint8_t)0);     // location #0
  for(int i = 0; i < 8; i++) {
    lcd.write(fill1[i]);
  }
  delay(10);

  // create a custom character
  // fill 2  
  lcd.write(0xFE);
  lcd.write(0x4E);
  lcd.write((uint8_t)1);     // location #1
  for(int i = 0; i < 8; i++) {
    lcd.write(fill2[i]);
  }
  delay(10);

  // create a custom character
  // fill 3  
  lcd.write(0xFE);
  lcd.write(0x4E);
  lcd.write((uint8_t)2);     // location #2
    for(int i = 0; i < 8; i++) {
    lcd.write(fill3[i]);
  }
  delay(10);

  // create a custom character
  // fill 4  
  lcd.write(0xFE);
  lcd.write(0x4E);
  lcd.write((uint8_t)3);     // location #3
    for(int i = 0; i < 8; i++) {
    lcd.write(fill4[i]);
  }
  delay(10);

  // create a custom character
  // fill 5  
  lcd.write(0xFE);
  lcd.write(0x4E);
  lcd.write((uint8_t)4);     // location #4
  for(int i = 0; i < 8; i++) {
    lcd.write(fill5[i]);
  }
  delay(10);
  
  // create a custom character
  // fill middle  
  lcd.write(0xFE);
  lcd.write(0x4E);
  lcd.write((uint8_t)5);     // location #4
  for(int i = 0; i < 8; i++) {
    lcd.write(fillMiddle[i]);
  }
  delay(10);





  clearSerialLCD(lcd);

  setSerialCursor(lcd, 0, 0);
  lcd.print("Starting up...");


  Serial.begin(115200);
  while (CAN_OK != CAN.begin(CAN_500KBPS)) {

    setSerialCursor(lcd,0, 0);    
    lcd.print(F("Connected to ECU"));
    setSerialCursor(lcd,0, 0);    
}

void loop() {
