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.
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.
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/2016 | Aggiornato pagina, aggiornato riferimento a libreria, aggiunto programma con caratteri personalizzati. |
02/10/2016 | Aggiornato pagina, inserito nuova versione del programma |
29/11/2010 | Emissione preliminare |