progress bar lcd 20x4 i2c

ciao ragazzi, ho dapoco acquistato un lcd 20x4 con i2c come collegamento…
vorrei fare una progression bar, ma non riesco, perche a video i caratteri speciali che servirebbero per fare la progression bar sono tutti sballati… è una cosa normale perche attraverso questo protocollo non e possibile crearla oppure sbaglio io in qualcosa? questo e il codice:

la libreria che uso e questa: http://forum.arduino.cc/index.php?topic=242423.0
perche con l altra non riuscivo a fare andare il display e non mi visualizzava proprio niente…
vi allego anche un immagine di quello che vedo a monitor

#include <Wire.h> 
#include <PCF8574_HD44780_I2C.h>
#define lenght 16.0
double percent=100.0;
unsigned char b;
unsigned int peace;
// caratteri personalizzati
PCF8574_HD44780_I2C lcd(0x27,20,4);
byte p1[8] = {
  0x10,
  0x10,
  0x10,
  0x10,
  0x10,
  0x10,
  0x10,
  0x10};
byte p2[8] = {
  0x18,
  0x18,
  0x18,
  0x18,
  0x18,
  0x18,
  0x18,
  0x18};
byte p3[8] = {
  0x1C,
  0x1C,
  0x1C,
  0x1C,
  0x1C,
  0x1C,
  0x1C,
  0x1C};
byte p4[8] = {
  0x1E,
  0x1E,
  0x1E,
  0x1E,
  0x1E,
  0x1E,
  0x1E,
  0x1E};
byte p5[8] = {
  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F};
 
void setup()   {
  delay(1000);
  lcd.createChar(0, p1);
  lcd.createChar(1, p2);
  lcd.createChar(2, p3); //genere i caratteri personalizzati
  lcd.createChar(3, p4);
  lcd.createChar(4, p5);
  lcd.begin(20, 4);
    lcd.init();           // LCD Initialization              
  lcd.backlight();      // Backlight ON
 // lcd.clear();          // Clear the display
}
void loop()
{
  delay (1000);
  lcd.setCursor(0, 0);
  //ADC conversion
  unsigned int value = analogRead(0); //legge il valore dal potenziometro
  percent = value/1024.0*100.0; //calcola la percentuale
  lcd.print(value);
  lcd.print(" - ");
  lcd.print(percent);
  lcd.print(" %   ");
  lcd.setCursor(0,1); //sposta il cursore
  double a=lenght/100*percent;
  // disegna i rettangoli neri sull'lcd
  if (a>=1) {
    for (int i=1;i<a;i++) {
      lcd.write(4);
      b=i;
    }
    a=a-b;
  }
  peace=a*5;
  // drawing charater's colums
  switch (peace) {
  case 0:
    break;
  case 1:
    lcd.print((char)0);
    break;
  case 2:
 
    lcd.write(1);
 
    break;
  case 3:
 
    lcd.write(2);
 
    break;
  case 4:
 
    lcd.write(3);
 
    break;
 
  }
  //clearing line
 
  for (int i =0;i<(lenght-b);i++) {
    lcd.print(" ");
  }
 
}

Ma altri caratteri come le cifre e le lettere che risiedono nella ROM del controller LCD vengono visualizzati bene?

Ciao Uwe

si, gli altri caratteri si vedono bene, infatti la scritta hello word viene visualizzata correttamente...non mi fa allegare l immagine, quindi se volete vederla vi rimando al mio dropbox.. https://www.dropbox.com/s/v70ejl3ma9rpyz2/dis.jpg?dl=0