Lição 20/31: Exibindo tensão no LCD1602
Este projeto demonstra como construir um voltímetro digital usando um Arduino e um display LCD1602 com interface I2C. Ao ler a tensão analógica de um potenciômetro e exibi-la na tela, você aprenderá as habilidades essenciais de conversão analógico-digital, comunicação I2C e controle de LCD.
Este projeto é um ótimo ponto de partida para muitas aplicações práticas. Aqui estão algumas ideias que você pode desenvolver:
- Construir um monitor de tensão de bateria portátil para seus projetos.
- Criar uma fonte de alimentação simples com leitura visual de tensão.
- Monitorar a saída de um painel solar ou outra fonte de tensão variável.
- Exibir o valor de qualquer sensor analógico, como um resistor dependente de luz (LDR), como um número legível.
Ao final deste guia, você terá uma compreensão clara de como conectar os componentes, configurar as bibliotecas necessárias e escrever o código para criar seu próprio display de tensão.
Componentes de Hardware
Para construir este projeto, você precisará dos seguintes componentes. O curso é baseado no kit Arduino 3-em-1 da SunFounder, que inclui todas essas peças.
- Placa Arduino (ex.: Uno)
- Display LCD1602 com módulo I2C
- Potenciômetro (10kΩ recomendado)
- Cabos de ligação (Jumper Wires)
- Protoboard (Breadboard)
Entendendo o LCD1602 e o Módulo I2C
O LCD1602 é um display alfanumérico popular com 16 colunas e 2 linhas. Um LCD paralelo padrão exigiria muitos pinos digitais para controle. No entanto, este display vem com um módulo I2C dedicado anexado à sua parte traseira (no vídeo em 01:30). Este módulo simplifica drasticamente a fiação, reduzindo a conexão a apenas quatro fios: VCC, GND, SDA e SCL. Isso é possível porque o módulo I2C atua como uma ponte, traduzindo o sinal serial I2C simples nos sinais paralelos que o LCD precisa.
Este projeto usa a interface I2C, que é um protocolo de comunicação que permite ao seu Arduino conversar com vários dispositivos usando apenas dois fios. Esta é uma habilidade fundamental para conectar muitos tipos de sensores e displays.
Guia de Fiação
Conectar o LCD e o potenciômetro ao Arduino é simples. O módulo I2C precisa de energia e duas linhas de comunicação. O potenciômetro atua como um divisor de tensão variável, permitindo ajustar a tensão no seu pino central (wiper).
Aqui está a configuração de fiação detalhada:
- Módulo I2C do LCD ao Arduino:
- GND ao GND do Arduino (no vídeo em 05:38).
- VCC ao 5V do Arduino (no vídeo em 05:47).
- SDA ao A4 do Arduino (no vídeo em 05:47).
- SCL ao A5 do Arduino (no vídeo em 05:57).
- Potenciômetro ao Arduino:
- Pino Esquerdo ao 5V do Arduino (no vídeo em 33:39).
- Pino Central (Wiper) ao A0 do Arduino (no vídeo em 33:43).
- Pino Direito ao GND do Arduino (no vídeo em 33:43).
Instalando a Biblioteca Necessária
Este projeto requer uma biblioteca externa para controlar o LCD via I2C. A biblioteca usada no vídeo é a biblioteca "Arduino Liquid Crystal I2C". Você pode baixá-la pelo link fornecido na página de recursos da Robojax ou pelo GitHub (no vídeo em 06:16).
Para instalá-la, baixe a biblioteca como um arquivo ZIP. Em seguida, no seu IDE Arduino, vá em Sketch > Include Library > Add .ZIP Library... e selecione o arquivo baixado (no vídeo em 06:41).
Encontrando o Endereço I2C do Seu LCD
Antes de enviar o código principal, é crucial determinar o endereço I2C do seu módulo LCD específico. Este endereço pode variar dependendo do fabricante. O vídeo demonstra como usar um scanner I2C para encontrá-lo (no vídeo em 08:11).
Você pode encontrar este scanner indo em File > Examples > Wire > i2c_scanner. Envie este código para o seu Arduino com o LCD conectado e abra o Monitor Serial. Ele exibirá o endereço, que geralmente é 0x27 ou 0x3F. Você precisará usar este endereço no seu código principal.
Explicação do Código
O código para este projeto é focado em ler um valor analógico e formatá-lo para exibição. Vamos detalhar as partes principais e configuráveis pelo usuário.
1. Inclusões de Biblioteca e Objeto LCD
Esta seção inclui as bibliotecas necessárias e cria um objeto para o seu LCD. A parte mais importante aqui é o endereço I2C, que você deve alterar para corresponder ao que encontrou na etapa anterior.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Defina o endereço do LCD para 0x27 para um display de 16 ou 20 caracteres e 2 ou 4 linhas
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: Esta biblioteca está integrada no Arduino e é necessária para a comunicação I2C.#include <LiquidCrystal_I2C.h>: Isso inclui a biblioteca que acabamos de instalar, que fornece as funções para controlar o LCD.LiquidCrystal_I2C lcd(0x27, 16, 2);: Esta linha cria um objeto chamadolcd. O primeiro parâmetro,0x27, é o endereço I2C que você encontrou anteriormente. O segundo e o terceiro parâmetros definem as dimensões do LCD: 16 colunas e 2 linhas. Você deve alterar0x27para o seu endereço específico se for diferente.
2. Funções de Configuração e Loop
A função setup() inicializa o LCD e liga sua luz de fundo. A função loop() contém a lógica principal para ler a tensão e exibi-la.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (código de exibição no LCD)
delay(1000);
}
lcd.begin(): Isso inicializa a interface do LCD e o prepara para uso.lcd.backlight(): Isso liga a luz de fundo do display, tornando o texto visível.int potValue = analogRead(A0);: Isso lê o valor analógico bruto do pino A0, que está conectado ao cursor do potenciômetro. O valor será um inteiro entre 0 e 1023, representando a tensão de 0V a 5V.float voltage = potValue * (5.0 / 1023.0);: Este é o passo crucial de conversão. Ele converte o valor bruto do ADC em uma leitura real de tensão. A fórmula multiplica o valor bruto pela razão entre a tensão de referência (5,0V) e o valor máximo do ADC (1023). Isso é necessário porque o ADC não lê tensão diretamente; ele lê um número proporcional.
3. Exibindo a Tensão
O código então limpa a tela e imprime o valor da tensão em uma posição específica na segunda linha.
lcd.clear();
lcd.print("Tutorial LCD1602");
lcd.setCursor (0,1); // vai para o início da 2ª linha
lcd.print("Tensão:");
lcd.setCursor (9,1); // define para a linha 2, caractere 9
lcd.print(voltage);
lcd.setCursor (13,1); // define para a linha 2, caractere 14
lcd.print("V");
lcd.clear(): Limpa qualquer texto anterior da tela.lcd.print("Tutorial LCD1602"): Imprime o título na primeira linha.lcd.setCursor (0,1): Define o cursor para o início da segunda linha. O primeiro parâmetro é a coluna (0-15), e o segundo é a linha (0 para a primeira linha, 1 para a segunda).lcd.print(voltage): Imprime o valor de tensão calculado. A variávelfloatserá impressa com duas casas decimais por padrão.lcd.setCursor (13,1): Move o cursor para a coluna 13 na segunda linha para posicionar o caractere "V" logo após o número.
Demonstração do Projeto ao Vivo
Depois de carregar o código, o LCD deve exibir "Tutorial LCD1602" na primeira linha. Na segunda linha, mostrará "Tensão:" seguido pela leitura atual de tensão. Ao girar o botão do potenciômetro, você verá a tensão exibida mudar em tempo real, variando de aproximadamente 0,00V a 5,00V (no vídeo em 35:25).
Este projeto é um exemplo perfeito de como pegar um sinal analógico bruto e transformá-lo em um valor claro e legível para humanos. As habilidades que você aprendeu aqui podem ser aplicadas diretamente a qualquer outro sensor analógico que você possa usar no futuro.
O vídeo também aborda outros tópicos relacionados, como exibir texto, rolagem e criar caracteres personalizados no LCD.
Projetos relacionados deste vídeo
- Lição 20/31: Usando LCD1602 com Arduino para exibir texto | Robojax
- Lição 20/31: Exibindo temperatura e umidade do DHT11 na tela LCD
Capítulos
- [00:00] Introdução ao LCD1602 e visão geral do projeto
- [01:30] Explicação do hardware LCD1602 e do módulo I2C
- [04:06] Definindo o endereço I2C com jumpers
- [05:28] Diagrama de ligação para o LCD1602
- [07:31] Explicação do código para exibição básica de texto
- [11:10] Demonstração do exemplo de cursor piscante
- [13:46] Criando e usando caracteres personalizados
- [18:51] Usando o exemplo de exibição serial
- [23:16] Rolando texto no LCD
- [26:13] Exibindo temperatura e umidade do DHT11
- [33:00] Lendo e exibindo tensão de um potenciômetro
- [35:56] Exibindo distância de um sensor ultrassônico
/*
Lesson 20/31: Displaying voltage on LCD1602
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 or 20 chars and 2 or 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int count =700;
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Voltage:");
lcd.setCursor (9,1); // set to line 2 char 9
lcd.print(voltage);
lcd.setCursor (13,1); // set to line 2 char 14
lcd.print("V");
//lcd.setCursor (3,3); // set to line 4 character 4
//lcd.print("Text in line 4");
delay(1000);
count++;
//end of loopcode Robojax code for LCD with I2C
}
Coisas que você pode precisar
-
AmazonasSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazonas
-
Amazonas
-
Amazonas
-
Amazonas
Recursos e referências
-
DocumentaçãoDocumentação para o Kit de Aprendizado 3 em 1 IoT/Carro Inteligente/SunFounderdocs.sunfounder.com
-
Externo
Arquivos📁
Bibliotecas do Arduino (zip)
-
Código fonte do kit de aprendizado Smart Car 3 em 1 da SunFounder
3in1-kit-main-v2.zip12.80 MB
Manual do Usuário
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB