Test modulo LCD seriale
ultimo aggiornamento 27 novembre 2016

JLCPCB - 2$ per prototipi di PCB, di qualsiasi colore. Produzione in 24 ore!
L'Azienda di prototipi PCB più popolare, con oltre 700.000 clienti in tutto il mondo!
Recati presso la JLCPCB, riceverai regali e coupon gratuiti
presso Maker Faire Rome il 18-20 ottobre


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

OurPCB, your most reliable PCB and PCBA supplier.

Focusing on PCB Prototype and PCB Assembly Turnkey Services.

One-Stop Wire Harness & Cable Assemblies Solution

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 è disponibile un semplice  Programma on-line una volta richiamato basterà creare nella finestra di sinistra, mentre sulla finestra di desta sarà 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