Arduino UNO R4 - LCD I2C

Este tutorial ensina como usar uma interface LCD I2C 16x2 com o Arduino UNO R4. Em detalhes, vamos aprender:

Arduino UNO R4 e LCD I2C 16x2

Sobre o LCD I2C 16x2

O LCD I2C 16x2 é um display com 16 colunas e 2 linhas. Ele possui uma interface I2C e inclui um potenciômetro para ajuste de contraste.

Pinagem

O LCD I2C se conecta por meio de uma interface I2C e tem 4 pinos.

  • Pino GND: conecte ao GND (0 volts).
  • Pino VCC: conecte ao VCC para alimentação (5 volts).
  • Pino SDA: transporta o sinal de dados I2C.
  • Pino SCL: transporta o sinal de clock I2C.
Pinagem do LCD I2C

Coordenadas do LCD

O LCD I2C 16x2 tem 16 colunas e 2 linhas. As colunas e as linhas começam a numeração em 0.

Coordenadas do LCD I2C com Arduino UNO R4

Diagrama de Ligação

Diagrama de ligação do LCD I2C com Arduino UNO R4

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

LCD I2C Arduino UNO R4, Nano Arduino Mega
Vin 5V 5V
GND GND GND
SDA A4 20
SCL A5 21

Como Programar para o LCD I2C

Usar a biblioteca DIYables_LCD_I2C torna muito fácil o controle do LCD.

  • Inclua a biblioteca:
#include <DIYables_LCD_I2C.h>
  • Crie um objeto DIYables_LCD_I2C informando o endereço I2C, o número de colunas e o número de linhas.
DIYables_LCD_I2C lcd(0x27, 16, 2); // Initialize the LCD with I2C address 0x27 for a 16x2 display
  • Configure a tela do LCD.
lcd.init(); // Initialize the LCD display lcd.backlight(); // Turn on the backlight of the LCD
  • 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!");

Podemos fazer muito mais com um LCD (veja a seção 'Faça Mais com o LCD').

※ Nota:

O endereço I2C do LCD pode ser diferente dependendo do fabricante. No nosso código, usamos o endereço 0x27, conforme especificado pelo fabricante DIYables.

Código Arduino UNO R4

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-lcd-i2c */ #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 lcd.backlight(); 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) } void loop() { }

Passos Rápidos

Siga estas instruções passo a passo:

  • Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente do Arduino Uno R4 WiFi/Minima na Arduino IDE.
  • Conecte o display LCD I2C ao Arduino UNO R4 conforme o diagrama fornecido.
  • Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
  • Vá até o ícone Libraries no lado esquerdo da Arduino IDE.
  • Digite "DIYables LCD I2C" na caixa de busca e procure a biblioteca DIYables_LCD_I2C da DIYables.
  • Pressione o botão Install para instalar a biblioteca DIYables_LCD_I2C.
Biblioteca DIYables LCD I2C para Arduino UNO R4
  • Copie o código e abra-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino UNO R4
  • Confira o resultado na tela do LCD
Display LCD I2C com Arduino UNO R4
  • Experimente mudar o texto e a posição dele

Vídeo

Faça Mais com o LCD

Caractere Personalizado

Para mostrar caracteres especiais ou símbolos, como um coração ou um passarinho bravo, em um LCD, você precisa usar o gerador de caracteres, porque a função lcd.print() só consegue exibir caracteres ASCII.

O LCD 16x2 pode mostrar 32 caracteres em 2 linhas, com 16 posições em cada linha. Cada caractere usa 40 quadradinhos, organizados em 8 linhas e 5 colunas.

Pixels do LCD 16x2 com Arduino UNO R4

O gerador de caracteres cria um caractere (40 pixels). Você só precisa 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> // Initialize the LCD connected via I2C at address 0x27 with 16 columns and 2 rows DIYables_LCD_I2C lcd(0x27, 16, 2); // Define byte array for creating custom character shape byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.init(); // Initialize LCD screen lcd.backlight(); // Turn on the backlight lcd.createChar(0, customChar); // Register the custom character on LCD with ID 0 lcd.setCursor(2, 0); // Set cursor to start at column 2, row 0 lcd.write((byte)0); // Display the custom character at the current cursor position } void loop(){ }

Resultado exibido na tela:

Caractere personalizado no LCD

Vários caracteres personalizados

Podemos criar até 8 caracteres especiais (numerados de 0 a 7). O exemplo abaixo mostra como criar e exibir três caracteres.

#include <DIYables_LCD_I2C.h> // Create an LCD object, using I2C address 0x27 with 16 columns and 2 rows DIYables_LCD_I2C lcd(0x27, 16, 2); // Define custom character 0 (heart shape) byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; // Define custom character 1 (arrow pointing upwards) byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; // Define custom character 2 (arrow pointing downwards) byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.init(); // Initialize the LCD display lcd.backlight(); // Turn on the LCD backlight // Register custom character 0 with index 0 on the LCD lcd.createChar(0, customChar0); // Register custom character 1 with index 1 on the LCD lcd.createChar(1, customChar1); // Register custom character 2 with index 2 on the LCD lcd.createChar(2, customChar2); // Set the cursor to column 2, row 0 lcd.setCursor(2, 0); // Display the custom character 0 at the current cursor position lcd.write((byte)0); // Set the cursor to column 4, row 0 lcd.setCursor(4, 0); // Display the custom character 1 at the current cursor position lcd.write((byte)1); // Set the cursor to column 6, row 0 lcd.setCursor(6, 0); // Display the custom character 2 at the current cursor position lcd.write((byte)2); } void loop() { }

Resultado exibido no display de cristal líquido (LCD):

Vários caracteres personalizados no LCD

Resumo: como usar caracteres personalizados no LCD

  • Use o gerador de caracteres acima para criar o código binário do seu caractere especial.
  • Anote o código binário do seu caractere (copie da etapa anterior).
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Crie um caractere personalizado e coloque-o em um número entre 0 e 7 na função setup().
lcd.createChar(index, customChar);
  • Exiba um caractere especial no LCD sempre que quiser, na função setup() ou loop().
lcd.setCursor(column, row); // Set the cursor to the specified column and row lcd.write((byte)index); // Display the custom character stored at 'index' position

Outras funções

Insira as funções a seguir na função loop() uma por uma, adicionando um delay(5000) depois de cada função.

  • Exibição do LCD fácil de ler
lcd.clear();
  • Posicione o cursor no canto superior esquerdo da tela.
lcd.home();
  • Posicione o cursor em um local específico (coluna, linha).
lcd.setCursor(column, row);
  • Mostra o cursor da tela do LCD.
lcd.cursor();
  • Desliga o cursor da tela do LCD.
lcd.noCursor();
  • Mostra o cursor piscando do LCD.
lcd.blink()
  • Para o cursor piscando do LCD.
lcd.noBlink()

Solução de Problemas do LCD I2C

Se o texto não aparecer no LCD I2C, verifique estes pontos:

  • Mude o brilho da tela do LCD girando o potenciômetro na parte de trás dele.
  • O endereço I2C do LCD pode variar de acordo com o fabricante. Geralmente é 0x27 ou 0x3F. Teste esses endereços um por um. Se nenhum funcionar, use o código a seguir para descobrir o endereço I2C correto.
// 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 }

O resultado exibido no Serial Monitor:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' 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
Arduino Uno R4 WiFi 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!