Voltimetro lcd 16x2

Ola pessoal
Estou iniciando no mundo da programação Arduino.
Estou desenvolvendo programinha PWM encoder com voltímetro.
Conforme giro encoder varia PWM pino 6, que está ligado pino entrada A0 para indicar voltagem no display.
PWM encoder display esta tudo certo.
Quando implemento canal analógico programa fica louco
Rotinas estão funcionando
cpp code
Problema quando implemento esta parte no void loop principal
cpp code
Fiz desta maneira,mas ai tranca display,mas pwm funciona
cpp code
Estou iniciando no mundo da programação Arduino.
Estou desenvolvendo programinha PWM encoder com voltímetro.
Conforme giro encoder varia PWM pino 6, que está ligado pino entrada A0 para indicar voltagem no display.
PWM encoder display esta tudo certo.
Quando implemento canal analógico programa fica louco
Rotinas estão funcionando
cpp code
///***************************************************************************************
#include <LiquidCrystal.h>
#include "Wire.h"
const int rs = 11, en = 9, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int brightness = 100; // brilho LED, começa com metade do brilho
int fadeAmount = 10; // quantos pontos para desvanecer o LED por
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 13; // pin 13
const int pin_B = 12; // pin 12
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
//******************************************************************************************
void setup() {
// declara o pino 6 como uma saída:
pinMode(6, OUTPUT);
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = currentTime;
{
}
lcd.begin(16, 2);
lcd.print("voltimetro");
lcd.setCursor(0, 1);
lcd.print("V");
lcd.setCursor(8, 1);
lcd.print(".");
}
//****************************************************************************************
void loop() {
currentTime = millis(); // obter o tempo decorrido atual
if(currentTime >= (loopTime + 5)){ // 5 ms desde a última verificação do codificador = 200Hz
encoder_A = digitalRead(pin_A); // Leia os pinos do codificador
encoder_B = digitalRead(pin_B);
if((!encoder_A) && (encoder_A_prev)){
if(encoder_B) { // A passou de alta para baixa
// B é alto, então no sentido horário
// aumentar o brilho, não ultrapasse 255
if(brightness + fadeAmount <= 255) brightness += fadeAmount;
}
else {
if(brightness - fadeAmount >= 0) brightness -= fadeAmount; // B é baixo, portanto, no sentido anti-horário
// diminuir o brilho, não vá abaixo de 0
}
}
encoder_A_prev = encoder_A; // Armazena o valor de A para a próxima vez
analogWrite(6, brightness); // defina o brilho do pino 6:
loopTime = currentTime; // Atualizações loopTime
}
// Outro processamento pode ser feito aqui
}
Problema quando implemento esta parte no void loop principal
cpp code
volt = analogRead(analogInput1);
lcd.setCursor(2,1); //VOLTIMETRO (POSICIONA DISPLAY)
lcd.print(volt);
Fiz desta maneira,mas ai tranca display,mas pwm funciona
cpp code
///*************************************************************************************************************************
#include <LiquidCrystal.h>
#include "Wire.h"
const int rs = 11, en = 9, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int brightness = 100; // brilho LED, começa com metade do brilho
int fadeAmount = 10; // quantos pontos para desvanecer o LED por
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 13; // pin 13
const int pin_B = 12; // pin 12
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
int analogInput1 = A0;
int volt;
//******************************************************************************************
void setup() {
// declara o pino 6 como uma saída:
pinMode(6, OUTPUT);
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = currentTime;
{
}
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("APLICADOR RHODIUM");
lcd.setCursor(0,1);
lcd.print("V");
}
//****************************************************************************************
void loop() {
volt = analogRead(analogInput1);
lcd.setCursor(2,1); //VOLTIMETRO (POSICIONA DISPLAY)
lcd.print(volt);
currentTime = millis(); // obter o tempo decorrido atual
if(currentTime >= (loopTime + 5)){ // 5 ms desde a última verificação do codificador = 200Hz
encoder_A = digitalRead(pin_A); // Leia os pinos do codificador
encoder_B = digitalRead(pin_B);
if((!encoder_A) && (encoder_A_prev)){
if(encoder_B) { // A passou de alta para baixa
// B é alto, então no sentido horário
// aumentar o brilho, não ultrapasse 255
if(brightness + fadeAmount <= 255) brightness += fadeAmount;
}
else {
if(brightness - fadeAmount >= 0) brightness -= fadeAmount; // B é baixo, portanto, no sentido anti-horário
// diminuir o brilho, não vá abaixo de 0
}
}
encoder_A_prev = encoder_A; // Armazena o valor de A para a próxima vez
// defina o brilho do pino 6:
analogWrite(6, brightness);
loopTime = currentTime; // Atualizações loopTime
}
// Outro processamento pode ser feito aqui
}