Prezados,
Então gente estou tendo dificuldade em realizar essa tarefa a um nível mais apurado e gostaria da opinião de vcs para melhorar o projeto.
Com esse código estou usando dois LDR’s para um precisão melhor (não acho q adiantou muito, mas ta nele) e o LCD 1602.
O problema é o seguinte, de acordo com a média da leitura dos LDR’s, quero que o brilho do LCD aumente ou diminui GRADATIVAMENTE igual o efeito FADE, também visto nos celulares, só que não estou conseguindo fazer esse efeito, o que consegui foi aumenta ou diminuir em meio que estágios, tipo em degrau.
#include <LiquidCrystal.h> //incluindo biblioteca do display
LiquidCrystal lcd(2,3,4,5,6,7); //setando os pinos do display
//variaveis e pinos do auto brilho
int ledPin = 9; //led do display
int ldrPin1 = A0; //ldr
int ldrPin2 = A1;
int ldrVal1; //variavel ldr - leitura
int ldrVal2;
int ldrM;//ldr media
const unsigned long eventLdr = 2000; //intervalo de atualizacao do autobrilho
unsigned long previousTime = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//setando pinos do auto brilho
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
// escrevendo o texto
lcd.begin(16,2);
lcd.setCursor(5,0);
lcd.print("Projeto");
lcd.setCursor(2,1);
lcd.print("Felipe Ishii");
delay(3000);
lcd.clear();
lcd.print("V_1: ");
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long currentTime = millis();
//esquema de autobrilho
if (currentTime - previousTime >= eventLdr){
ldrVal1 = analogRead(ldrPin1);//leitura do ldr1
ldrVal2 = analogRead(ldrPin2);
ldrM = (ldrVal1 + ldrVal2)/2; //Media
ldrM = map(ldrM,0,1023,0,255);// equipara a leitura do ldrM de 0 a 1023(MAX) ao pino PWM do led (0 a 255)
Serial.print("LDR:");
Serial.println(ldrM);
analogWrite(ledPin, ldrM);// acende o led de acordo com a variacao de brilho
previousTime = currentTime;
}
}