ESP8266 - LCD

Este tutorial ensina você a usar o display LCD com o ESP8266 e como programar o ESP8266 para exibir texto e caracteres especiais no LCD.

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×LCD I2C Display 3.3V
1×(Alternativa) LCD I2C 20x4
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Nota de compra: A maioria dos displays LCD I2C no mercado é de 5V. Eles podem funcionar com esta placa, mas não é seguro e pode danificar a placa. Recomendamos fortemente usar o display LCD I2C de 3.3V recomendado acima.

Sobre o LCD I2C 16x2

O LCD I2C é uma alternativa melhor ao LCD padrão. Com apenas 4 pinos, fica fácil conectá-lo ao ESP8266. Um potenciômetro embutido facilita o ajuste do contraste do LCD.

Pinagem do LCD I2C

O LCD I2C usa uma interface I2C para se conectar ao ESP8266. Ele possui 4 pinos:

  • Pino GND: Deve ser conectado ao GND (0V).
  • Pino VCC: É a alimentação do LCD e deve ser conectado ao VCC (5V).
  • Pino SDA: É o sinal de dados I2C.
  • Pino SCL: É o sinal de clock I2C.
Pinagem do LCD I2C

Coordenadas do LCD

O LCD I2C 16x2 possui um total de 16 colunas e 2 linhas. As colunas e linhas são numeradas a partir de 0.

Coordenadas do LCD I2C com ESP8266 NodeMCU

Diagrama de Ligação

Diagrama de ligação do LCD I2C com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

LCD I2C ESP8266
Vin Vin
GND GND
SDA D2 (GPIO4)
SCL D1 (GPIO5)

Como Programar o LCD I2C

A biblioteca DIYables_LCD_I2C precisa ser incluída para usar o LCD.

  • Configure o LCD:

O LCD precisa ser configurado antes de poder ser usado.

  • Escreva no LCD:

Escrever no LCD fica simples graças à biblioteca DIYables_LCD_I2C.

#include <DIYables_LCD_I2C.h> // Library for LCD
  • Declare um objeto da classe DIYables_LCD_I2C, especificando o endereço I2C, o número de colunas e o número de linhas.
DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
  • Inicie o LCD.
lcd.init(); //initialize the lcd lcd.backlight(); //open the backlight
  • Posicione o cursor no local desejado (column_index, row_index)
lcd.setCursor(column_index, row_index);
  • Exiba uma mensagem na tela do LCD.
lcd.print("Hello World!");

Explore as possibilidades do que pode ser feito com o LCD na seção "Faça Mais com o LCD".

※ Nota:

O endereço do LCD pode variar dependendo do fabricante. Em nosso código, usamos 0x27, que é especificado pelo fabricante DIYables.

Código ESP8266

#include <DIYables_LCD_I2C.h> DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows void setup() { lcd.init(); // Initialize the LCD I2C display lcd.backlight(); } void loop() { lcd.clear(); // clear display lcd.setCursor(0, 0); // move cursor to (0, 0) lcd.print("Arduino"); // print message at (0, 0) lcd.setCursor(2, 1); // move cursor to (2, 1) lcd.print("GetStarted.com"); // print message at (2, 1) delay(2000); // display the above for two seconds lcd.clear(); // clear display lcd.setCursor(3, 0); // move cursor to (3, 0) lcd.print("DIYables"); // print message at (3, 0) lcd.setCursor(0, 1); // move cursor to (0, 1) lcd.print("www.diyables.io"); // print message at (0, 1) delay(2000); // display the above for two seconds }

Passos Rápidos

Para começar com o ESP8266 na Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para ESP8266 na Arduino IDE se esta for sua primeira vez usando o ESP8266.
  • Conecte os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Clique no ícone Libraries na barra lateral esquerda da Arduino IDE.
  • Pesquise por "DIYables LCD I2C" e localize a biblioteca DIYables_LCD_I2C criada pela DIYables.
  • Em seguida, clique no botão Install para adicionar a biblioteca.
Biblioteca DIYables LCD I2C para ESP8266 NodeMCU
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para compilar e fazer upload do código para o ESP8266.
  • Confira o resultado no LCD.
ESP8266 NodeMCU exibindo texto no LCD
  • Of images
  • Experimente mudar as palavras e a posição das imagens.

Vídeo

Faça Mais com o LCD

Caractere Personalizado

lcd.print() só permite caracteres ASCII. Para mostrar um caractere especial ou símbolo (por exemplo, coração, angry bird), use o gerador de caracteres.

Um LCD 16x2 tem capacidade para mostrar 32 caracteres. Cada caractere é formado por 40 pixels, com 8 linhas e 5 colunas.

Pixels do LCD 16x2 com ESP8266 NodeMCU

O gerador de caracteres produz um caractere de 40 pixels. Para usá-lo, basta seguir estes passos:

Click on each pixel to select/deselect


Copy below custom character code
Replace the customChar[8] in the below code
#include <DIYables_LCD_I2C.h> DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.init(); // Initialize the LCD I2C display lcd.backlight(); lcd.createChar(0, customChar); // create a new custom character lcd.setCursor(2, 0); // move cursor to (2, 0) lcd.write((byte)0); // print the custom char at (2, 0) } void loop() { }

O resultado exibido na tela do LCD é: . O resultado mostrado no LCD é:

Caractere personalizado no LCD

Vários caracteres personalizados

Podemos criar no máximo 8 caracteres personalizados, numerados de 0 a 7. O exemplo a seguir cria e mostra três deles.

#include <DIYables_LCD_I2C.h> DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.init(); // Initialize the LCD I2C display lcd.backlight(); lcd.createChar(0, customChar0); // create a new custom character (index 0) lcd.createChar(1, customChar1); // create a new custom character (index 1) lcd.createChar(2, customChar2); // create a new custom character (index 2) lcd.setCursor(2, 0); // move cursor to (2, 0) lcd.write((byte)0); // print the custom char 0 at (2, 0) lcd.setCursor(4, 0); // move cursor to (4, 0) lcd.write((byte)1); // print the custom char 1 at (4, 0) lcd.setCursor(6, 0); // move cursor to (6, 0) lcd.write((byte)2); // print the custom char 2 at (6, 0) } void loop() { }

O resultado exibido no LCD é: . O resultado mostrado no LCD é:

Vários caracteres personalizados no LCD

Resumo: como usar caracteres personalizados no LCD

  • Utilize o gerador de caracteres para gerar o código binário do seu caractere personalizado.
  • Copie o código binário gerado no passo anterior e declare-o.
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Defina um caractere de sua própria criação na rotina setup() e atribua a ele um valor numérico entre 0 e 7.
lcd.createChar(index, customChar);
  • Exiba o caractere personalizado no LCD a qualquer momento, seja na função setup() ou na loop().
lcd.setCursor(column, row); // move cursor to a desired position lcd.write((byte)index); // print the custom char at the desired position

Outras funções

  • Imprimir "Hello World"

Insira as seguintes funções na função loop() em sequência:

  • Limpar a tela do LCD
  • Aguardar 5000 milissegundos
  • Imprimir "Hello World"
lcd.clear();
  • Posicionar o cursor no canto superior esquerdo do LCD.
lcd.home();
  • Posicionar o cursor em uma coluna e linha específicas.
lcd.setCursor(column, row);
  • Mostrar o cursor na tela do LCD.
lcd.cursor();
  • Tornar o cursor do LCD invisível.
lcd.noCursor();
  • Fazer o cursor do LCD piscar.
lcd.blink()
  • Desativar o piscar do cursor do LCD.
lcd.noBlink()

Desafie-se

Utilize o LCD para realizar um dos seguintes projetos:

Solução de Problemas do LCD I2C

  1. Ajuste o contraste do LCD girando o potenciômetro localizado na parte de trás do LCD.
  2. Dependendo do fabricante, o endereço I2C do LCD pode variar. Geralmente, o endereço I2C padrão do LCD é 0x27 ou 0x3F. Tente esses valores um de cada vez. Se não funcionar, execute o código abaixo para descobrir o endereço I2C.
// I2C address scanner program #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("I2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for (address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.print(address, HEX); Serial.println(" !"); nDevices++; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found"); else Serial.println("done"); delay(5000); // wait 5 seconds for next scan }

A saída exibida no Serial Monitor é: . O efeito que pode ser visto no Serial Monitor é: . O que aparece no Serial Monitor é:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Scanning... I2C device found at address 0x3F ! done Scanning... I2C device found at address 0x3F ! done
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!