Magos do Arduino

Display LCD de 16x2

Aprenda a utilizar um display LCD de 16x2 com o Arduino

Magos do Arduino

Display LCD de 16x2

O display LCD de 16x2 é composto de cristal líquido.

Seu modo mais comum e o que possui 2 linhas e 16 colunas.

Display LCD de 16x2

Ele pode ser configurado usando os pinos de data, porém o Arduino possui uma biblioteca que facilita a utilização deste display.

Um potenciômetro externo deve ser conectado para controlar o brilho da tela.

Cada bloco do display é composto por um conjunto de pixels no formato 8x5 pixels.

Depende da biblioteca LiquidCrystal que deve ser instalada na Arduino IDE.

Display LCD de 16x2

Neste projeto você criará um circuito que faz o uso de um display LCD de 16x2 com o Arduino.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x Breadboard
  • 1x Arduino UNO
  • 1x Display LCD de 16x2
  • 1x Potenciômetro de 10k
  • Jumpers

Circuito Display LCD de 16x2

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Circuito display LCD de 16x2

Código fonte para o circuito do display LCD de 16x2

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

/**
* Código do curso Magos do Arduino para conectar um display 
* LCD de 16x2 com o Arduino.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/

#include <LiquidCrystal.h>

#define PINO_RS 12
#define PINO_ENABLE 11
#define PINO_D4 5
#define PINO_D5 4
#define PINO_D6 3
#define PINO_D7 2

byte sorriso[8] = {
    0b00000,
    0b00000,
    0b01010,
    0b00000,
    0b00000,
    0b10001,
    0b01110,
    0b00000
};

byte coracao[8] = {
    0b00000,
    0b01010,
    0b11111,
    0b11111,
    0b11111,
    0b01110,
    0b00100,
    0b00000
};

byte casa[8] = {
    0b00100,
    0b01110,
    0b11111,
    0b01110,
    0b01010,
    0b01010,
    0b01110,
    0b00000
};

// cria uma instância do LCD
LiquidCrystal lcd(PINO_RS, PINO_ENABLE, PINO_D4, PINO_D5, PINO_D6, PINO_D7);

void setup() {
    // iniciailiza o LCD com as dimensões corretas
    lcd.begin(16, 2);

    // cria novos caracteres
    lcd.createChar(0, sorriso);
    lcd.createChar(1, coracao);
    lcd.createChar(2, casa);
}

void loop() {
    // move o cursor para a primeira coluna na primeira linha
    lcd.setCursor(0, 0);
    // imprime uma mensagem no display
    lcd.print("Magos do Arduino!");
    delay(3000);

    for (int i=0; i<17; i++) {
        // faz a rolagem do texto para a esquerda
        lcd.scrollDisplayLeft();
        delay(150);
    }

    for (int i=0; i<17; i++) {
        // faz a rolagem do texto para a direita
        lcd.scrollDisplayRight();
        delay(150);
    }

    // limpa a tela
    lcd.clear();
    lcd.print("Teste cursor");
    // move o cursor para a primeira coluna na segunda linha
    lcd.setCursor(0, 1);
    lcd.print("Parado:");
    // exibe o cursor
    lcd.cursor();
    delay(3000);

    // limpa a tela
    lcd.clear();
    lcd.print("Teste cursor");
    // move o cursor para a primeira coluna na segunda linha
    lcd.setCursor(0, 1);
    lcd.print("Piscando:");
    // piscar cursor
    lcd.blink();
    delay(3000);

    // limpa a tela
    lcd.clear();
    lcd.print("Teste cursor");
    // move o cursor para a primeira coluna na segunda linha
    lcd.setCursor(0, 1);
    lcd.print("Parado:");
    // parar de piscar o cursor
    lcd.noBlink();
    delay(3000);

    // limpa a tela
    lcd.clear();
    lcd.print("Teste cursor");
    // move o cursor para a primeira coluna na segunda linha
    lcd.setCursor(0, 1);
    lcd.print("Sem cursor:");
    // remove o cursor
    lcd.noCursor();
    delay(3000);

    // limpa a tela
    lcd.clear();
    lcd.write(byte(0));
    lcd.write(byte(1));
    lcd.write(byte(2));
    delay(3000);

    // limpa a tela
    lcd.clear();
}