Conectando o display via i2c ao arduino. Conexão do módulo LCD I2C ao Arduino

10.09.2021

Talvez uma das telas mais populares do mercado. Construído no popular controlador HD44780U. Do nome do modelo conclui-se que a tela é composta por duas linhas de 16 caracteres. Não há suporte para o idioma russo neste modelo específico.

O barramento de dados sh2s permite conectar até 127 dispositivos através de dois fios, simultaneamente. Este I2C é implementado no chip PCF8574T.

Diagrama de conexão:

Coisa azul - resistência variável, permite ajustar o contraste da tela.

O jumper à esquerda é responsável pela iluminação de fundo da tela.

Um bloco de 4 contatos está conectado ao Arduino assim:

GND - GND
VCC - 5V
SDA - A4 (se Arduino MEGA, então para D20)
SCL - A5 (se Arduino MEGA, então para D21)

Biblioteca

Esboço

O display pode ter um endereço IIC diferente, em vez de 0x27 pode ser 0x3F. Para determinar o endereço com precisão, você pode usar um scanner de dispositivo i2c.

#incluir #incluir //define o endereço Tela LCD 0x27, 16 caracteres, 2 linhas LiquidCrystal_I2Clcd(0x27, 16, 2); configuração vazia() ( lcd.init(); // Inicializa a tela //liga a luz de fundo lcd.luz de fundo(); //Defina a posição a partir da qual o texto será exibido. lcd.setCursor(2, 0); //linha de saída 1 lcd.print("Olá, Mundo!"); //imprime a segunda linha da mesma maneira lcd.setCursor(1, 1);

Talvez uma das telas mais populares do mercado. Construído no popular controlador HD44780U. Do nome do modelo conclui-se que a tela é composta por duas linhas de 16 caracteres. Não há suporte para o idioma russo neste modelo específico.

O barramento de dados sh2s permite conectar até 127 dispositivos através de dois fios, simultaneamente. Este I2C é implementado no chip PCF8574T.

Diagrama de conexão:

lcd.print("www.site"); ) loop vazio () ( )

O jumper à esquerda é responsável pela iluminação de fundo da tela.

Um bloco de 4 contatos está conectado ao Arduino assim:

GND - GND
VCC - 5V
SDA - A4 (se Arduino MEGA, então para D20)
SCL - A5 (se Arduino MEGA, então para D21)

Biblioteca

Esboço

O display pode ter um endereço IIC diferente, em vez de 0x27 pode ser 0x3F. Para determinar o endereço com precisão, você pode usar um scanner de dispositivo i2c.

#incluir #incluir A coisa azul é uma resistência variável que permite ajustar o contraste da tela. LiquidCrystal_I2Clcd(0x27, 16, 2); configuração vazia() ( lcd.init(); // Inicializa a tela //liga a luz de fundo lcd.luz de fundo(); //Defina a posição a partir da qual o texto será exibido. lcd.setCursor(2, 0); //linha de saída 1 lcd.print("Olá, Mundo!"); //imprime a segunda linha da mesma maneira lcd.setCursor(1, 1);

//define o endereço da tela LCD 0x27, 16 caracteres, 2 linhas Neste artigo vou contar como usar o módulo de interface I2C para controlar um display LCD (2x16 / 20x4) com usando Arduino

. Este módulo permite reduzir o número de pinos do controlador utilizados em vez de uma conexão de 8 ou 4 bits, são necessários apenas 2 pinos (SDA e SCL).

Parâmetros Técnicos
Suporte de exibição: LCD 16×02 / 20×04
Opcional: ajuste de contraste
Tensão de alimentação. 5V
Interface: I2C

Dimensões: 54 mm x 19 mm x 15 mm

Informações gerais sobre o módulo de interface I2C Como o número de pinos nos controladores Arduino é limitado e muitas vezes quando usado vários sensores

Agora um pouco sobre o módulo em si; ele é construído no chip PCF8574T. Os resistores R8 (4,7 kOhm) e R9 (4,7 kOhm) são necessários para puxar as linhas SDA e SCL. Idealmente, ao conectar dois ou mais dispositivos através do barramento I2C, você precisa usar um pull-up em apenas um dispositivo, I. Vou escrever o porquê mais tarde. Existem três jumpers na placa (o diagrama mostra que as linhas A0, A1, A2 estão conectadas à fonte de alimentação através dos resistores R4, R5, R6), eles são necessários para alterar o endereçamento do dispositivo, são 8 opções no total . Alterar o endereçamento nos dá a capacidade de conectar até oito dispositivos através do barramento IC2 com o chip PCF8574T; as opções de endereço são mostradas na figura (o endereço padrão do dispositivo é 0x27). O módulo também é equipado com um potenciômetro R11, com sua ajuda você pode alterar o contraste do display LCD.

Existem três grupos de contatos no módulo para conexão:

Primeiro grupo:
SCL: Relógio serial
SDA: linha de dados (Serial Dфta)
VCC: potência "+"
GND: fonte de alimentação "-"

Segundo grupo:
VSS: "-" potência
VDD: potência “+”
VO: Pino de controle de contraste
RS: Cadastre-se Selecione
RW: Leitura/Escrita (modo de gravação quando conectado ao terra)
E: Habilitar (estroboscópio de queda)
DB0-DB3: Interface com bits baixos
DB4-DB7: Interface de bits altos
A: fonte de alimentação de luz de fundo "+"
K: "-" potência da luz de fundo

Terceiro grupo: (jumper definido por padrão)
VCC:
A do LCD:

Conectando ao Arduino

Peças necessárias:
Arduino UNO R3 x 1 unid.
Visor LCD 1602A (2×16, 5V, Azul) x 1 unid.
Módulo de interface I2C, IIC, TWI para LCD x 1 unid.
Fio DuPont, 2,54 mm, 20 cm, FM (fêmea - macho) x 1 unid.
Cabo USB 2,0 AB x 1 unid.

Conexão:
Primeiro de tudo, solde o módulo I2C ao Visor LCD, então você precisa conectar o display ao Arduino UNO. Para fazer isso, usaremos a fiação DuPont que conectamos conforme a tabela abaixo.

Para maior clareza, darei outro diagrama.

Para este experimento, você precisa baixar e instalar a biblioteca “LiquidCrystal_I2C”. Em seguida, copie e cole este código de exemplo na janela do programa Arduino IDE e carregue-o no controlador.

/* Testado em IDE do Arduino 1.6.11 Data do teste 15/09/2016 */ #incluir #incluir LiquidCrystal_I2Clcd(0x27,16,2); // Define o endereço e o tamanho do display void setup() ( lcd.init(); // Inicializa o lcd lcd.backlight(); // Liga a luz de fundo lcd.setCursor(0,0); // Define o cursor para o início da 1 linha lcd .print("Hello, world"); // Imprime o texto lcd.setCursor(0,1); // Coloca o cursor para o início da linha 2 lcd.print("www. site"); // Imprime o texto ) void loop() ( )

Se você fez tudo corretamente, mas não há símbolos no display, tente aumentar o contraste com o potenciômetro.


Ligações
Baixar biblioteca
Documentação para o chip
Documentação para

Compre no Aliexpress

Comprei aqui outro dispositivo de uma boa loja de Chip Resistor para estudo e uso em dispositivos úteis. Este dispositivo foi projetado para controlar um display LCD controlado por um controlador HD44780, no modo de 4 bits. Para isso, é instalado na placa um microcircuito, que é um conversor do barramento I2C em uma porta paralela de 8 bits.

A placa é roteada de forma que possa ser conectada imediatamente ao display LCD. A entrada fornece energia e linhas I2C. A placa é imediatamente equipada com resistores pull-up nas linhas SCL e SDA, potenciômetro para ajuste de contraste e fonte de alimentação para o próprio display.

O jumper à direita liga/desliga a luz de fundo. Então, armado com um testador, a tabela a seguir foi compilada. Depois de estudar o módulo, foi revelado que P3 controla a luz de fundo. Se o jumper estiver instalado, 1 liga a luz de fundo e 0 desliga. Quando o jumper é removido, a luz de fundo fica sempre desligada. Em seguida, decidiu-se complementar a biblioteca axlib com funções para trabalhar com o barramento I2C (implementação de software) e funções para controlar o chip PCF8574. Resumindo, como funciona o módulo. Para gerar um byte em paralelo, você precisa enviar o endereço do microcircuito para o barramento I2C (por padrão é 0x4E. Você também pode alterar o endereço soldando jumpers na placa e alterando o valor dos três menos significativos bits do endereço), então após receber o ACK, um byte de dados é enviado. Depois que o chip responde com um ACK, o byte aparece na porta paralela do chip. Para controlar o display LCD, peguei funções da biblioteca axlib e modifiquei-as ligeiramente para funcionar com o barramento I2C. #incluir #incluir #incluir #incluir #define ADICIONAR 0x4E //Endereço do chip /* Chip LCD RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 Há uma luz de fundo na perna de conexão P3. 1 ligado, 0 desligado */ // Dados de saída com |= 0x04; // E por unidade pcf8574_byte_out(com, ADICIONAR); // Dados de saída com &= 0xFB; //E para zero pcf8574_byte_out(com, ADICIONAR); // Dados de saída) void init(void) ( _delay_ms(30); com(0x30); _atraso_us(40); com(0x30); //Muda para modo 4 bits _atraso_us(40); //Atraso para execução do comando com(0x30); //Muda para modo 4 bits _atraso_us(40); //Atraso para execução do comando com(0x20); //Muda para modo 4 bits _atraso_us(40); //Atraso para execução do comando com(0x20); //Definindo parâmetros com(0x80); //Definindo parâmetros com(0x00); //Desliga a exibição com(0x80); //Desliga a exibição com(0x00); //Limpa a tela com(0x10); //Limpa a tela com(0x00); com(0x60); // Define o modo de entrada de dados com(0x00); com(0xC0); //Ativa o display com o cursor selecionado) void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Transfere os 4 bits mais significativos de data_h |= 0x04; pcf8574_byte_out(data_h, ADD); //Transfere os 4 bits mais significativos //Transfere os 4 bits mais significativos // Transfere 4 bits baixos // Transfere 4 bits baixos // Transfere 4 bits baixos) void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) int main(void) ( init(); str_out("ЁPҐBET MҐP!" ); enquanto(1) ( ) ) Exatamente o que está acontecendo aqui. Primeiro conectamos as bibliotecas para I2C e para PCF8574. Já escrevi sobre I2C, então continuarei falando sobre isso novamente, mas direi o que há em PCF8574.h. A biblioteca inclui apenas três funções.
BYTE pcf8574_test(BYTE add) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); i2c_stop(); return ask; ) A primeira função foi escrita para verificar se um dispositivo está no barramento. Em princípio, pode ser utilizado para pesquisar qualquer dispositivo localizado no barramento. A função pega o endereço do dispositivo desejado e se responder retorna zero. Se um dispositivo com esse endereço não estiver no barramento, ele retornará um.
BYTE pcf8574_byte_out (dados BYTE, BYTE add) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); if(!ask) ask = i2c_send_byte(data); i2c_stop(); return perguntar; ) Esta função já foi adaptada exclusivamente para este chip. Como argumentos é fornecido um byte a ser transferido para o barramento e o endereço do chip. A função primeiro consultará o chip por endereço e depois enviará o byte. Se o chip recebeu um byte e respondeu com ACK, a função terminará de funcionar com o chip e retornará zero como envio bem-sucedido do byte. E neste momento o microcircuito enviará este byte para sua porta paralela. Caso contrário, receberemos NACK e retornaremos um, a transmissão falhou.
BYTE pcf8574_str_out(BYTE *dados, BYTE col, BYTE add) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); for(BYTE i=0; i Esta função foi criada para experimentação. Aceita um ponteiro para uma matriz de dados de um byte, o número desses bytes e o endereço do chip. Na verdade, uma tentativa de transferir todos os dados em uma sessão, e não em um byte por sessão. A função funciona, mas não é adequada para o display LCD. Agora vamos voltar ao programa principal. Após conectar as bibliotecas, escrevemos o endereço do microcircuito. A seguir, criamos três funções semelhantes a lcd.h. A única diferença está no princípio da transferência de dados.
void com(BYTE com) ( com |= 0x08; //P3 para um para que a luz de fundo fique acesa pcf8574_byte_out(com, ADICIONAR); // Dados de saída com |= 0x04; // E por unidade pcf8574_byte_out(com, ADICIONAR); // Dados de saída com &= 0xFB; //E para zero pcf8574_byte_out(com, ADICIONAR); // Dados de saída } Esta função apenas envia comandos para o display. Foi aqui que apareceu a primeira linha com a adição lógica do comando de 0x08. Este bug é necessário porque transmitimos o byte não diretamente para a porta do display LCD, mas através do nosso repetidor. Ou seja, se fornecemos um byte e precisamos gerar apenas um bit, atribua o bit necessário ao byte anterior e envie-o novamente para a porta. Isso é um incômodo. A adição com 0x08 é necessária para manter constantemente um no terceiro dígito. Lembra da luz de fundo? É essa adição que liga a luz de fundo. Então chamamos a função de transferência de byte para o barramento. Está escrito acima. Em seguida, transferimos o byte através do barramento para o chip. Em seguida, você deve definir E como um, que é o que a adição lógica do byte de 0x04 realmente faz. Após redefinir E. Assim, você pode enviar qualquer comando para o display apenas passando o próprio comando como argumento. void init(void) ( _delay_ms(30); //Pausa após ligar com(0x30); //Muda para modo 4 bits _atraso_us(40); //Atraso para execução do comando com(0x30); //Muda para modo 4 bits _atraso_us(40); //Atraso para execução do comando com(0x30); //Muda para modo 4 bits _atraso_us(40); //Atraso para execução do comando com(0x20); //Muda para modo 4 bits _atraso_us(40); //Atraso para execução do comando com(0x20); //Definindo parâmetros com(0x80); //Definindo parâmetros com(0x00); //Desliga a exibição com(0x80); //Desliga a exibição com(0x00); //Limpa a tela com(0x10); //Limpa a tela com(0x00); // Define o modo de entrada de dados com(0x60); // Define o modo de entrada de dados com(0x00); //Ativa o display com o cursor selecionado com(0xC0); //Ativa o display com o cursor selecionado } Esta função apenas inicializa o display. A sequência de comandos é retirada da ficha técnica do display LCD. void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Transfere os 4 bits mais significativos de data_h |= 0x04; pcf8574_byte_out(data_h, ADD); //Transfere os 4 bits mais significativos dados_h &= 0xF9; //Transfere os 4 bits mais significativos pcf8574_byte_out(dados_h, ADICIONAR); // Transfere 4 bits baixos pcf8574_byte_out(dados_l, ADICIONAR); // Transfere 4 bits baixos dados_l |= 0x04; // Transfere 4 bits baixos } pcf8574_byte_out(dados_l, ADICIONAR); dados_l &= 0xF9; pcf8574_byte_out(dados_l, ADICIONAR);

Esta função transmite dados para o display LCD. Ele é executado da mesma forma que os comandos, exceto que o byte é transmitido primeiro com o nibble mais significativo e depois com o byte mais baixo. E o resto é o mesmo.

void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) )

Bem, esta função serve apenas para passar uma string para o display. Na verdade, não tem nada a ver com o nosso tópico.

Projeto para AtmelStudio 6.2 

Devido à falta da vírgula, a exibição não será afetada. Este dispositivo foi projetado especificamente para monitores com este controlador ou similar. Mas este microcircuito é um expansor de porta realmente simples. Concordo com E. Variáveis ​​adicionais são necessárias. Se você passar um argumento para uma função e executar certas ações com lógica, poderão ocorrer falhas. Eu já encontrei isso. A inicialização é realizada sem violação de tempo. A documentação diz que há uma pausa de 40 µs entre os comandos. Pelo fato da transferência ocorrer pelo barramento i2c, que por sua vez é software e lento, os períodos são completados com juros. Se você ainda não tem preguiça, escreva sua versão e envie para mim. Vou publicá-lo. Afinal, este site é destinado ao público amador e quem quiser pode expressar sua opinião e visão sobre a vida do MK.

Alexei 06.08.15 09:14

Adicionados tempos ao inicializar a tela, conforme observado pelo respeitado “Alfabetizado”

Dmitry 14/06/16 21:57

Olá Alexey. Você pode adicionar uma biblioteca ao gerador de código para funcionar com PCF8574.

Alexei 14/06/16 22:32

Vou pensar.))

ruslan 21/12/16 19:54
Alexei 21/12/16 21:53

Oh sim. Principalmente o código em ASMA. Os especialistas em Arduino irão apreciar isso ao máximo)))

Py.sy.
Mesmo que você não olhe para o ASM, o programa foi escrito para um controlador PIC. Esta informação é “muito” útil para especialistas em AVR? especialmente para iniciantes))) Não tenho nada contra o PIC, mas até o ASM do PIC e do AVR é ​​diferente. Quanto aos detalhes de funcionamento do display LCD, você pode dar uma olhada))) É verdade, também escrevi em CVAVR, mas todos os comandos são desmontados e classificados em prateleiras. Mas em qualquer caso, decida onde está escrito com mais clareza))) O autor escreve, o leitor escolhe.

GeK 01/04/17 12:52

"Endereço I2C do chip (por padrão é 0x4E"

Os 4 bits mais significativos do endereço são fixos,
O prefixo para PCF8574 é 0100 e para PCF8574A é 0111
Os 3 bits inferiores dependem do estado das entradas A2-A0 do chip. Por padrão, todos os 3 jumpers estão abertos, respectivamente, o endereço do chip assume o valor 0111111.
//A2 A1 A0 PCF8574 PCF8574A
//1 1 1 0x20 0x38
//1 1 0 0x21 0x39
//1 0 1 0x22 0x3A
//1 0 0 0x23 0x3B
//0 1 1 0x24 0x3C
//0 1 0 0x25 0x3D
//0 0 1 0x26 0x3E
//0 0 0 0x27 0x3F

Alexei 01/04/17 14:27

Você confundiu alguma coisa.
Extraído da documentação do microcircuito

0b01001110 é 0x4E
Então está tudo correto aqui. E se precisar alterar o endereço, basta alterá-lo em Definir.

Yuri 14/12/17 21:26

Bom dia! E você também pode usar o código de função lcdgotoxy e lcdclear para trabalhar com o adaptador para PCF8574.

Alexandre 20.05.18 18:14

Bom dia! Como você produz texto em russo?

Alexei 20.05.18 23:04

Este é um display doméstico da MELT. O alfabeto cirílico está gravado em sua memória.

Alexandre 21/05/18 04:55

Bom dia! Escrevo como você faz no Projeto para AtmelStudio 6.2 "ЁPҐBET MҐP!" ele sai normalmente
e se você escrever "OLÁ MUNDO!" traz à tona todo tipo de bobagem. eu tenho dois
Uma das opções de exibição possui alfabeto cirílico. o segundo é chinês.

Alexei 21/05/18 09:22

Eu primeiro escreveria um programa de teste. Itera por toda a memória e exibe símbolos e seus endereços. E então descubra qual é o problema. Muito provavelmente a tabela de caracteres não corresponde à tabela ASCII.

Andrey 03/09/18 08:32

Bom dia!

Você pode fornecer um diagrama de circuito para o Proteus?

Andrey 03/09/18 10:22

Ou ninguém verificou no Proteuse?

Andrey 03/09/18 10:56

Descobri main_init

Pavel 30/05/19 23:35

Uma coisa curiosa, o endereço do display é 0x4E, e se o mesmo display estiver conectado ao Arduino, então o endereço é 0x27

Pavel 31/05/19 11:04

Muito obrigado pelo seu trabalho! Vasculhei toda a Internet e nenhum dos exemplos dados, exceto o seu, funcionou. A única coisa é que no arquivo do projeto os atrasos _delay_ não são especificados na função de inicialização do display e, portanto, não funciona

Alexei 01/06/19 09:52

Bem, este é mais um projeto de demonstração. Por um bom motivo, a biblioteca axlib precisa ser reescrita, mas dado o fato de que STM32 e STM8 estão se movendo aos trancos e barrancos, não há sentido no AVR.

Pavel 05/06/19 12:57

STM não possui pacotes DIP, é mais difícil fazer placas de circuito impresso. Para meus projetos, as capacidades do AVR são muitas, você pode colocar muita coisa em um Atmega 8

Alexei 05/06/19 15:20

Sim, mas quanto custa Atmega8 e stm8s003)))

Dmitry 07/06/19 00:41

Olá, Alexei.
Por favor, diga-me como ler o status da porta do pcf8574?
Quero fazer uma unidade externa, 8 GPIO no barramento i2c - é isso.

Dmitry 07/06/19 17:56

eu vou me responder
A função retorna um byte - o estado das portas do microcircuito
uint8_t pcf8574_byte_rcv(uint8_t endereço)
{
uint8_t perguntar = ACK;
endereço |= 0b01; //LER
dados uint8_t=0;
i2c_start();
perguntar = i2c_send_byte(endereço);
if(!ask) dados = i2c_read_byte(NACK);
i2c_stop();

Dados de retorno;
}

Paulo 07/06/19 20:37

Quanto custa, 150 rublos, pelo preço de um relé em geral) e como você conecta placas para STM? LUT não é confiável, o roteador CNC não tem certeza do que será necessário (não tentei)

Neste artigo vou contar como usar um módulo de interface I2C para controlar um display LCD (2x16/20x4) usando Arduino. Este módulo permite reduzir o número de pinos do controlador utilizados em vez de uma conexão de 8 ou 4 bits, são necessários apenas 2 pinos (SDA e SCL).

. Este módulo permite reduzir o número de pinos do controlador utilizados em vez de uma conexão de 8 ou 4 bits, são necessários apenas 2 pinos (SDA e SCL).

Parâmetros Técnicos
Suporte de exibição: LCD 16×02 / 20×04
Opcional: ajuste de contraste
Tensão de alimentação. 5V
Interface: I2C

Dimensões: 54 mm x 19 mm x 15 mm

Como o número de contatos nos controladores Arduino é limitado e muitas vezes eles se esgotam ao utilizar diversos sensores e módulos, há necessidade de salvá-los. Para esses casos, este módulo foi desenvolvido, com sua ajuda você pode implementar a transmissão em dois contatos (. SDA e SCL).

Agora um pouco sobre o módulo em si; ele é construído no chip PCF8574T. Os resistores R8 (4,7 kOhm) e R9 (4,7 kOhm) são necessários para puxar as linhas SDA e SCL. Idealmente, ao conectar dois ou mais dispositivos através do barramento I2C, você precisa usar um pull-up em apenas um dispositivo, I. Vou escrever o porquê mais tarde. Existem três jumpers na placa (o diagrama mostra que as linhas A0, A1, A2 estão conectadas à fonte de alimentação através dos resistores R4, R5, R6), eles são necessários para alterar o endereçamento do dispositivo, são 8 opções no total . Alterar o endereçamento nos dá a capacidade de conectar até oito dispositivos através do barramento IC2 com o chip PCF8574T; as opções de endereço são mostradas na figura (o endereço padrão do dispositivo é 0x27). O módulo também é equipado com um potenciômetro R11, com sua ajuda você pode alterar o contraste do display LCD.

Existem três grupos de contatos no módulo para conexão:

Primeiro grupo:
SCL: Relógio serial
SDA: linha de dados (Serial Dфta)
VCC: potência "+"
GND: fonte de alimentação "-"

Segundo grupo:
VSS: "-" potência
VDD: potência “+”
VO: Pino de controle de contraste
RS: Cadastre-se Selecione
RW: Leitura/Escrita (modo de gravação quando conectado ao terra)
E: Habilitar (estroboscópio de queda)
DB0-DB3: Interface com bits baixos
DB4-DB7: Interface de bits altos
A: fonte de alimentação de luz de fundo "+"
K: "-" potência da luz de fundo

Terceiro grupo: (jumper definido por padrão)
VCC:
A do LCD:

Conectando ao Arduino

Peças necessárias:
Arduino UNO R3 x 1 unidade.
Visor LCD 1602A (2×16, 5V, Azul) x 1 unid.
Módulo de interface I2C, IIC, TWI para LCD x 1 unid.
Fio DuPont, 2,54 mm, 20 cm, FM (fêmea - macho) x 1 unid.
Cabo USB 2.0 AB x 1 unidade.

Conexão:
Primeiramente soldamos o módulo I2C ao display LCD, depois é necessário conectar o display ao Arduino UNO. Para fazer isso, usaremos a fiação DuPont que conectamos conforme a tabela abaixo.

Para maior clareza, darei outro diagrama.

Para este experimento, você precisa baixar e instalar a biblioteca “LiquidCrystal_I2C”. Em seguida, copie e cole este código de exemplo na janela do programa Arduino IDE e carregue-o no controlador.

/* Testado no Arduino IDE 1.6.11 Data do teste 15/09/2016 */ #incluir #incluir LiquidCrystal_I2Clcd(0x27,16,2); // Define o endereço e o tamanho do display void setup() ( lcd.init(); // Inicializa o lcd lcd.backlight(); // Liga a luz de fundo lcd.setCursor(0,0); // Define o cursor para o início da 1 linha lcd .print("Hello, world"); // Imprime o texto lcd.setCursor(0,1); // Coloca o cursor para o início da linha 2 lcd.print("www. robotchip.ru"); // Imprime o texto ) void loop() ( )

Baixe o programa

Se você fez tudo corretamente, mas não há símbolos no display, tente aumentar o contraste com o potenciômetro.


Ligações
Baixe a biblioteca LiquidCrystal_I2C
Documentação para o chip PCF8574T
Documentação para LCD1602A

Compre no Aliexpress