come fare progress bar lcd

ciao ragazzi.. vorrei fare una progress bar. ho visto su internet qualche progetto anche se non c' è ne sono molti in giro e non ho capito più o meno niente di come si fa la progress bar quindi vi volevo fare delle domande...
1): i caratteri della progress bar fanno accendere ogni colonna singolarmente o tutto il quadrato dei pixel?
2) nei programmi della progress bar all' inizio del programma c' è questo:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
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};

cosa è?
3) come si fà ad arduino per dirgli di stamparlo nel monitor?

Che display hai ??

Non potresti, per semplificati la vita, usare qualche libreria già pronta tipo le u8glib e usare la sua funzione DrawRect ??
Tramite una semplice proporzione disegna la tua progressBar, no ??

ho un display 16x 2... non so cosa è questa libreria... comuque più semplice è meglio è... :slight_smile:

Il 16x2 con HD44780 hanno possibilitá di definire 8 caratteri a Tuo piacimento.
Devi definire dei caratteri e usare quelli. la libreria LiquidCrystal ha una funzione createChar() per definirle e poi basta che scrivi i caratteri da 0 a 7. LiquidCrystal - Arduino Reference
Ciao Uwe

marcobiondo13:
ho un display 16x 2... non so cosa è questa libreria... comuque più semplice è meglio è... :slight_smile:

Pensavo ad un GLCD, sorry !!!

per fare il codice della barra di progressione ho usato questo codice:

  lcd.setCursor(0, 0);
  //ADC conversion
  unsigned int value = analogRead(0); //legge il valore dal potenziometro
  percent = value/1023.0*100.0; //calcola la percentuale
  
  lcd.print(percent);
  lcd.print("%");
  lcd.print(" 70c ");
  
  lcd.print (hours);
  lcd.print (":");
  lcd.print (minutes);
  lcd.print (":");
  lcd.print (seconds);
  
  
  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(" ");
  }

  
}

per modificare i valori come posso fare... perche adesso mi ritrovo che inizia da un 10% e non riesce ad arrivare al 100% ma solo al 90%... come posso fare in modo da regolarlo per bene?

Ciao, ti voglio segnalare un articolo sul mio blog, ti può essere utile!

si, lo spezzone di programma lo ho preso proprio da te... il fatto è che mi servirebbe sapere come posso modificare i valori... tipo che lo 0 per cento sia 1 volt e il 100% sia 4 volt... perche se no non riesco mai ad arrivare al massimo e invece al minomo sta sempre al 10 %

Per Alex,

provato, funziona molto bene, vorrei farne una che scrive sul display da dx verso sinistra
ho fatto questo

ma non funziona bene
grazie
Jack

come si fà quindi per avere una scala ridotta diciamo?

ciao,

puoi usare la map (http://arduino.cc/en/Reference/Map).

Nel tuo caso se il valore che vuoi visualizzare (quello da 1 a 4 volt) l'hai letto nella variabile V ed il valore da mostrare (quello da 0 a 100) lo chiami D, allora:

D = map(V, 1, 4, 0, 100);

Ciao.
V.