/*
* TRABALHAR COM DISPLAY LCD LIGADO NO BARRAMENTO I2C
* VARIAVEIS COM VALORES AJUSTADOS
*
* PROGRAMA PARAENVIAR UMA VARIAVEL FLOAT PARA O DISPLAY LCD
* LER UM POTENCIOMETRO (0 A 5V), CONVERTER A LEITURA A/D
* DE 0 A 1023 PARA 0 A 5V, COM 3 CASAS DEPOIS DA VIRGULA
* E ENVIAR O RESULTADO PARA O DISPLAY LCD
*/
// INCLUDES E DEFINES
#include <Wire.h> // OBRIGATORIO PARA DISPLAY
#include <LiquidCrystal_I2C.h> // OBRIGATORIO PARA DISPLAY
#define potenciometro A0 // NOMEAMOS - A0 - COMO - potenciometro -
// DEFINIR ENDEREÇO E TAMANHO DISPLAY
LiquidCrystal_I2C lcd(0x27, 16, 2); //endereço, colunas, linhas - OBRIGATORIO PARA DISPLAY
// VARIAVEIS E GLOBAIS
int valorPot;
int tensao;
int digito1, digito2, digito3, digito4;
//PROTOTIPO DE FUNÇOES
//CONFIGURAÇOES INICIAIS
void setup() {
// Configuração do display
lcd.init(); // Inicialização display - OBRIGATORIO PARA DISPLAY
lcd.backlight(); // Liga backlight - OBRIGATORIO PARA DISPLAY
pinMode(potenciometro, INPUT); // ATIVANDO A PORTA A0 OU potenciometro
} //FIM VOID SETUP
// FUNÇAO PRINCIPAL
void loop() {
// LER O POTENCIOMETRO E ARMAZENAR EM UMA VARIAVEL
valorPot = analogRead(potenciometro);
// CONDICIONAR O VALOR
/*
PARA QUE O LCD FIQUE MAIS ORGANIZADO, A SOLUÇÃO QUANDO SE TRABALHACOM NUMEROS FRACIONARIOS É TRABALHAR
COM NUMEROS INTEIROS E EXTRAIR OS DIGITOS ATRAVES DO MÉTODO DAS DIVISOES SUCESSIVAS NO NOSSO EXEMPLO,
O OBJETIVO É TRABALHAR COM NUMEROS DE 0 A 5 COM 3 CASAS DECIMAIS
PARA QYE O METODO FUNCIONE É NECESSARIO CONVERTER A ESCALA A/D, QUE É DE 0 A 1023, PARA UMA ESCALA DE 0 A 5000.
digito1 = tensao/100;
//colocar a virgula
digito2 = (tensao % 1000) / 100;
digito3 = (tensao % 100) / 10;
digito4 = (tensao % 10) / 1;
*/
tensao = map(valorPot, 0, 1023, 0, 5000);
// EXTRAIR OS DIGITOS
digito1 = tensao/100;
//colocar a virgula
digito2 = (tensao % 1000) / 100;
digito3 = (tensao % 100) / 10;
digito4 = (tensao % 10) / 1;
// ENVIAR PARA DISPLAY
lcd.setCursor(6, 1); // COLUNA - LINHA
lcd.print(digito1);
lcd.print(",");
lcd.print(digito2);
lcd.print(digito3);
lcd.print(digito4);
lcd.print("V");
} // FIM VOID LOOP
// FUNÇOES ESPECIAIS