Arduino Forum

International => Italiano => Software => Topic started by: vincenzO88 on Aug 17, 2019, 06:38 pm

Title: LCD 20×4
Post by: vincenzO88 on Aug 17, 2019, 06:38 pm
Salve, vorrei cominciare un progetto dove mi interesserebbe avere nel display lcd 20×4, il disegno di una batteria (come quella che si trova nel display di ogni smartphone). Spero possiate aiutarmi...
Title: Re: LCD 20×4
Post by: gpb01 on Aug 17, 2019, 06:55 pm
Gli LCD hanno il set di caratteri fisso, ma ci sono otto posizioni che invece sono programmabili disegnando il simbolo pixel a pixel ...

Ti allego il datasheet del più diffuso controller per LCD (sono tutto compatibili con questo) così vedi dove sono mappati e come si fano i caratteri "custom" (CGRAM) .

Devi disegnarti vari elementi per rappresentare la batteria a pezzi (pieni o vuoti) per indicare i vari valori di carica.

Guglielmo

P.S.: Normalmente, le librerie per LCD, già prevedono delle funzioni per la memorizzazione di tali caratteri.
Title: Re: LCD 20×4
Post by: steve-cr on Aug 17, 2019, 07:22 pm
Poi capisco anche che vorresti sapere come si fa in pratica... :D

All'inizio del programma, definisci i caratteri che ti servono (io avevo bisogno di una freccia verso l'alto, una verso il basso ed una destra-sinistra per vedere se l'umidità era in salita, stabile oppure in discesa)

Code: [Select]
#include <PCF8574_HD44780_I2C.h>

PCF8574_HD44780_I2C lcd(0x27,20,4);

// make some custom characters:
byte arrowUp[8] = {
  0b00100,
  0b01110,
  0b10101,
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b00000
};

byte arrowDn[8] = {
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b10101,
  0b01110,
  0b00100,
  0b00000
};

byte stable[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b11111,
  0b01010,
  0b00000,
  0b00000,
  0b00000
};


Poi, nel SETUP, passi i tuoi caratteri al programma:

Code: [Select]
void setup() {

  // Init LCD
  
  lcd.init ();

  // create new characters
  lcd.createChar(0, arrowUp);
  lcd.createChar(1, arrowDn);
  lcd.createChar(2, stable);


...e nel momento che li vuoi far apparire sul LCD li scrivi così:

Code: [Select]
     lcd.setCursor (18,2);
      if (RH==RHave) lcd.write(byte(2)); // scrittura caratteri speciali
      if (RH<RHave)  lcd.write(byte(1));
      if (RH>RHave)  lcd.write(byte(0));


Per la tua batteria (che per forza di cose disegnerai in verticale) puoi fare tre o quattro caratteri con i vari livelli di riempimento, come nei telefonini.

Quello te lo lascio disegnare a te  :D
Title: Re: LCD 20×4
Post by: vincenzO88 on Aug 17, 2019, 07:33 pm
grazie, per le risposte, molto esaustivi entrambi. Invece se volessi utilizzare un oled o un display tfy? verrebbe più facile e magari la qualità sarebbe migliore? o è tutto il contrario?
Title: Re: LCD 20×4
Post by: gpb01 on Aug 17, 2019, 07:37 pm
grazie, per le risposte, molto esaustivi entrambi. Invece se volessi utilizzare un oled o un display tfy?
... sempre a manina i vari simboli ti devi disegnare e sempre come serie di bit disposti per righe o colonne li devi memorizzare :D

Guglielmo

>steve-cr: ... senza dare sempre la "pappa fatta" basta magari suggerire agli utenti di studiarsi gli esempi delle librerie ... "CustomChars" per l'estattezza   :smiley-evil:
Title: Re: LCD 20×4
Post by: vincenzO88 on Aug 17, 2019, 08:24 pm
Grazie di nuovo. Vorrei avere un'ultima informazione, per un tft quale libreria bisogna consultare?
Title: Re: LCD 20×4
Post by: gpb01 on Aug 17, 2019, 08:37 pm
Grazie di nuovo. Vorrei avere un'ultima informazione, per un tft quale libreria bisogna consultare?
Dipende dal chip che controlla il TFT ... Adafruit ha una libreria per i TFT che vende lei, Rinky-Dink Electronics (http://www.rinkydinkelectronics.com/library.php) ha altre librerie ottimizzate per un'altra serie di chip e così via ...

Guglielmo