Go Down

Topic: come fare progress bar lcd (Read 683 times) previous topic - next topic

marcobiondo13

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:
Code: [Select]
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?

ghennet

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 ??

marcobiondo13

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

uwefed

#3
Oct 17, 2013, 04:39 pm Last Edit: Oct 17, 2013, 04:41 pm by uwefed Reason: 1
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. http://arduino.cc/en/Reference/LiquidCrystalCreateChar
Ciao Uwe

ghennet


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


Pensavo ad un GLCD, sorry !!!

marcobiondo13

per fare il codice della barra di progressione ho usato questo codice:
Code: [Select]
  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?

alex27riva

Ciao, ti voglio segnalare un articolo sul mio blog, ti può essere utile!
http://alessandro-riva-elettronica.blogspot.it/2013/09/progress-bar-orizzontale-lcd-con.html
Arduino UNO starter kit.

marcobiondo13

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 %

jolite

Per Alex,
http://alessandro-riva-elettronica.blogspot.it/2013/09/progress-bar-orizzontale-lcd-con.html
provato, funziona molto bene, vorrei farne una che scrive sul display da dx verso sinistra
ho fatto questo
http://youtu.be/53HFazvpznE
ma non funziona bene
grazie
Jack

marcobiondo13

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

vittorio68

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.

Go Up