Edoardo Vignali
Liquid Crystal e Arduino
Tutorials -
Domenica 02 Maggio 2010 09:45
Scritto da Edoardo Vignali

Collegare un LCD a Arduino

Introduzione

Esistono diversi tipi di display da interfacciare ad arduino e si distinguono per il numero di righe e il numero di colonne. I display pi√Ļ classici sono quelli 16 colonne x 2 righe, ma ne esistono anche da 20x4 e da 128x64.

Interfacciarsi con un display è molto semplice, basterà scaricare la libreria LiquidCrystal che potrete trovare anche qui e seguire lo schema di collegamento riportato qui sotto. Vedremo le istruzioni e qualche sketch successivamente. Lo schema fa riferimento ad un display 16x2.

lcd 16x2 arduino collegamenti

Pin del display

  1. Vcc: +5V
  2. Vss: GND
  3. Vee: Contrasto, girando il potenziometro vedrete una riga riempirsi di rettangolini
  4. RS: Dice al microcontrollore del display se il comando che inviamo da Arduino è un carattere Ascii oppure un bit di comando, come ad esempio uno spostamento del cursore. Arduino pin 6
  5. R/W: è il pin che serve a leggere/scrivere sul display. Noi vogliamo scrivere sul display quindi lo collegheremo a massa dato che Write è attivo basso.
  6. E: Pin che usiamo per dire all LCD quando i dati sono pronti per essere letti. Arduino pin 7
  7. DB0: non usato
  8. DB1: non usato
  9. DB2: non usato
  10. DB3: non usato
  11. DB4: dati Arduino pin 8
  12. DB5: dati Arduino pin 9
  13. DB6: dati Arduino pin 10
  14. DB7: dati Arduino pin 11
  15. LED+: Con il Potenziometro cambieremo la luce di sfondo. Possiamo collegare questo pin ad un uscita pwm di arduino per regolare l'intensità luminosa da programma.
  16. LED-: GND

Nella libreria liquid crystal ci sono molti sketch di esempio, voi non dovrete far altro che cambiare l'istruzione

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); con LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

Istruzioni Libreria Liquid Crystal

  • LiquidCrystal();
    • LiquidCrystal(rs, enable, d4, d5, d6, d7)
    • LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
    • LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
    • LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)

Con questa istruzione definiamo i pin connessi ad Arduino. Un errore in questa istruzione potrebbe portare a non visualizzare nulla sul display, quindi attenzione.

ES: LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

  • Begin();
    • Begin(#Colonne, #righe);

Con questa istruzione definiamo il numero di righe e di colonne del nostro display.

ES: lcd.begin(16,2);

  • Clear();

Questa istruzione pulisce il display dai caratteri scritti in precedenza

ES: lcd.clear();

  • home();

Posiziona il cursore nella casella in alto a sinistra.

ES: lcd.home();

  • setCursor(#colonne,#righe);

Setta il cursore nella posizione che vogliamo, quindi dopo questa istruzione inizieremo a scrivere in un dato punto del display.

Es:lcd.setcursor(0,0); Equivalente di home.

  • write(data);

Scrive sul display il carattere associato ad un certo codice HEX.

  • print(data);

Si usa per scrivere sul display, può essere usata anche con la sintassi print(data,base); in cui se data è esadecimale, base sarà 16, binario base 2 ecc ecc. Data può essere un int, byte, long int, char oppure string.

ES: lcd.print("hello world");

  • cursor(); e noCursor();

cursor(); Mostra un carattere underscore nella casella in cui verrà scritto il prossimo carattere. noCursor();  nasconde il cursore.

  • blink(); e noBlink();

blink(); mostra un cursore lampeggiante, mentre noBlink(); lo nasconde.

  • display(); e noDisplay();

Abilita e disabilita il display.

  • scrollDisplayLeft(); e scrollDisplayRight();

Queste istruzioni si usano per shiftare a destra(right) o a sinistra(left) il testo ed il cursore di uno spazio.

  • autoscroll(); e noAutoscroll();

Setta il display in modalità autoscroll, questa modalità scriverà ogni nuovo carattere nella stessa posizione del precedente e il precedente sarà shiftato, se stiamo scrivendo in modalità da sinistra a destra (di default), il testo sarà shiftato a sinistra.Se stiamo scrivendo in modalità da destra a sinistra, il display scorrerà verso destra. noAutoscroll(); esce dalla modalità autoscroll.

  • LeftToRight(); e RightToLeft();

LeftToRight(); setta la modalità di scrittura da sinistra a destra (default), mentre RightToLeft(); setta la modalità di scrittura da destra a sinistra.

  • createChar(num,data);

Crea un carattere personalizzato, num varia da 0 a 7 e indicizza i caratteri personalizzati. Data è una mappa dei bit del nuovo carattere.

Es:

byte smiley[8] = {   B00000,   B10001,   B00000,   B00000,   B10001,   B01110,   B00000, };
     void setup() {
        lcd.createChar(0, smiley);
        lcd.begin(16, 2);
        lcd.write(0);
        }

Sketch Display Seriale

Includete la libreria LiquidCrystal.h

/*
  LiquidCrystal Library - Serial Input
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the 
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch displays text sent over the serial port 
 (e.g. from the Serial Monitor) on an attached LCD.
 
 The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe 
modified 25 July 2009
 by David A. Mellis
 
 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup(){
    // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // initialize the serial communications:
  Serial.begin(9600);
}

void loop()
{
  // when characters arrive over the serial port...
  if (Serial.available()) {
    // wait a bit for the entire message to arrive
    delay(100);
    // clear the screen
    lcd.clear();
    // read all the available characters
    while (Serial.available() > 0) {
      // display each character to the LCD
      lcd.write(Serial.read());
    }
  }
}

CC

 

Gioblu Robotics ¬© 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi