Test modulo LCD seriale
ultimo aggiornamento 27 novembre 2016

 

Per visualizzare dei messaggi o mostrare dei valori rilevati tramite sensori può essere necessario disporre di un display LCD.
Una pratica soluzione è quella di utilizzarne uno con comando seriale che utilizzando un solo filo più i due di alimentazione non occupa molti pin sulla scheda.
Vi sono in commercio molti modelli, ma la soluzione più economica è quella dell'autocostruzione, sul sito SPARKFUN è possibile trovare il modulo che può essere realizzato in quanto viene fornito sia lo schema che il file di programmazione del processore.

Per la sua costruzione potete trovare maggiori informazioni su questa pagina del mio sito.

ser_lcd-spark-fun_prova.jpg ser_lcd-spark-fun_montato.jpg

homotix

PCBA

OurPCB

Arduino duemilanove - collaudo lcd.jpg

Per facilitare la gestione del modulo sono state realizzate diverse versioni di librerie, quella più completa può essere trovate a questo link, e può essere scaricata da questo link.


Libreria SerLCD

La libreria attualmente nella versione 1.7, mette a disposizione le seguenti funzioni:


Scarica il programma "test_LCD_2016.ino"

/*
  test_LCD_2016.ino
  Il programma invia sue semplici stringhe da visualizzare su
  un LCD pilotato tramite un circuito pilotato tramite
  linea seriale.

  Vengono utilizzati i seguenti pin della scheda Arduino UNO
  Pin +5V       -> Positivo alimentazione
  Pin GND       -> Negativo alimentazione
  Pin Digital 2 -> Ricezione dati seriali

  Ultimo aggiornamento il 27/11/2016

  Sito https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#include <SoftwareSerial.h>
#include <serLCD.h>

// Impostazione pin RX del display LCD
int pin = 2;
serLCD lcd(pin);

void setup()
{
}

void loop()
{
  lcd.clear();
  delay (1000);
  lcd.setCursor(1, 1);
  lcd.print("Collaudo LCD");
  delay (1000);
  lcd.setCursor(2, 1);
  lcd.print("www.adrirobot.it");
  delay(1000);
}

 

Per creare dei caratteri speciali sono disponibili alcune soluzioni online. Per esempio vedete questi due link:

http://omerk.github.io/lcdchargen/
https://www.quinapalus.com/hd44780udg.html

una volta creato il codice dello sketch da copiare direttamente nell'IDE per la programmazione di Arduino.  In verità il codice è compatibile con la libreria LiquidCrystal.h che permette di comunicare con il display LCD in modalità 4 bit questo vuol dire che per la trasmissione dati sono utilizzate 4 linee di controllo a cui si aggiungono le due linee di controllo: Register Select (RS) e Enable (E) e alla linea opzionale Read/Write (RW), vedere ad esempio la pagina Arduino Mini shield per LCD.

Codice del Sketch con utilizzo dei caratteri speciali


Scarica il programma "createChar.ino"

/*
  createChar.ino
  Il programma definisce 8 speciali caratterie e li mostra
  sul display LCD pilotato tramite un circuito pilotato tramite
  linea seriale.

  Vengono utilizzati i seguenti pin della scheda Arduino UNO
  Pin +5V       -> Positivo alimentazione
  Pin GND       -> Negativo alimentazione
  Pin Digital 2 -> Ricezione dati seriali

  Ultimo aggiornamento il 27/11/2016

  Sito https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#include <SoftwareSerial.h>
#include <serLCD.h>

// Impostazione pin RX del display LCD
int pin = 2;
serLCD lcd(pin);

byte down[8] = {
  B00100,
  B00100,
  B00100,
  B00100,
  B00100,
  B10101,
  B01110,
  B00100
};

byte up[8] = {
  B00100,
  B01110,
  B10101,
  B00100,
  B00100,
  B00100,
  B00100,
  B00100
};

byte Omega[8] = {
  B00000,
  B01110,
  B10001,
  B10001,
  B10001,
  B01010,
  B11011,
  B00000
};

byte micro[8] = {
  B00000,
  B00000,
  B00000,
  B10010,
  B10010,
  B10010,
  B11100,
  B10000
};

byte gradi[8] = {
  B11000,
  B11000,
  B00110,
  B01001,
  B01000,
  B01001,
  B00110,
  B00000
};

byte a_accentata[8] = {
  B00010,
  B00001,
  B01110,
  B00001,
  B01111,
  B11001,
  B01111,
};


byte DX[8] = {
  B00000,
  B00000,
  B00100,
  B00010,
  B11111,
  B00010,
  B00100,
  B00000
};
byte SX[8] = {
  B00000,
  B00000,
  B00100,
  B01000,
  B11111,
  B01000,
  B00100,
  B00000
};


void setup()
{
  lcd.createChar(1, down);
  lcd.createChar(2, up);
  lcd.createChar(3, Omega);
  lcd.createChar(4, micro);
  lcd.createChar(5, gradi);
  lcd.createChar(6, a_accentata);
  lcd.createChar(7, SX);
  lcd.createChar(8, DX);
}

void loop()
{
  lcd.clear();
  lcd.setCursor(1, 1);
  lcd.printCustomChar(1); //down
  lcd.setCursor(1, 3);
  lcd.printCustomChar(2); //up
  lcd.setCursor(1, 5);
  lcd.printCustomChar(3); //Omega
  lcd.setCursor(1, 7);
  lcd.printCustomChar(4); //micro
  lcd.setCursor(1, 9);
  lcd.printCustomChar(5); //gradi
  lcd.setCursor(1, 11);
  lcd.printCustomChar(6); //a_accentata
  lcd.setCursor(1, 13);
  lcd.printCustomChar(7); //SX
  lcd.setCursor(1, 15);
  lcd.printCustomChar(8); //DX
  delay(1000);
  lcd.setCursor(2, 1);
  lcd.print("www.adrirobot.it");
  delay(3000);
  lcd.clear();
  lcd.setCursor(1, 1);
  lcd.print("Temperatura:25 ");
  lcd.printCustomChar(5); //gradi
  lcd.setCursor(2, 1);
  lcd.print("Umidit");
  lcd.printCustomChar(6); //a_accentata
  lcd.print("    :57 %");
  delay(3000);
  lcd.clear();
  lcd.setCursor(1, 1);
  lcd.print("Resistenza:3.4");
  lcd.printCustomChar(3); //omega
  lcd.setCursor(2, 1);
  lcd.print("Capacit");
  lcd.printCustomChar(6); //a_accentata
  lcd.print("  :2.1");
  lcd.printCustomChar(4); //micro
  lcd.print("F");
  delay(3000);
}

 

Elenco revisioni
27/11/2016Aggiornato pagina, aggiornato riferimento a libreria, aggiunto programma con caratteri personalizzati.
02/10/2016Aggiornato pagina, inserito nuova versione del programma
29/11/2010Emissione preliminare
Private Policy Cookie Policy Termini e Condizioni