boa noite a todos !
tenho um problema que na qual não estou sabendo lidar , meu lcd do nada começou ficar com umas letras falhando e piscando , quase apagadas ...
pensei que fosse programação mais mesmo assim , mesmo uma coisa básica (" ola mundo") ele ficava do mesmo jeito
analisei tudo e tudo correto.
será que é uma possibilidade de ele esta queimando ?
Tags:
Não há o que analisar... vc não mandou o codigo, filme, foto, nada...
Tente escrever e dar um delay(500)
Isso é sintoma de vc colocar no loop mandando reescrever. Ele apaga e reescreve fazendo manchas.
O tempo de atualização ideal seria a cada meio segundo. 100ms para mais.
um que eu usei quando deu problema
e o outro bem básico pra escrever na tela do lcd msm
o que estava usando na programação quando deu o problema
#include <DHT.h>
#include <LiquidCrystal.h>
#define DHTPIN A0
#define DHTTYPE DHT22
#define PIN_SENSOR A1
#define Relay_irrigator 8
#define Relay_ventilation 7
#define buzzer 13
int redpin = 10;
int bluepin = 9;
int greenpin = 6;
int valor_analogico;
int val;
// floats
float tmax = 30.00,tmin = 25.00;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
//serial begin
//Serial.begin(9600);
//pinagem
pinMode(PIN_SENSOR, INPUT);
pinMode(Relay_ventilation, OUTPUT);
pinMode(Relay_irrigator, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(redpin, OUTPUT);
pinMode(bluepin, OUTPUT);
pinMode(greenpin, OUTPUT);
//inicialização SENSORES
dht.begin();
lcd.begin(16, 2);
digitalWrite(buzzer, HIGH);
delay(250);
digitalWrite(buzzer, LOW);
delay(3000);
}
void loop() {
digitalWrite(buzzer, HIGH);
delay(250);
digitalWrite(buzzer, LOW);
delay(5000);
float t = dht.readTemperature();
float u = dht.readHumidity();
if(isnan(t) || isnan(u)){
analogWrite(11, 255);
analogWrite(10, 125);
analogWrite(9, 255);
digitalWrite(Relay_ventilation, HIGH);
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
Serial.print("ERRO SENSOR DHT22");
delay(1000);
Serial.print("reiniciando");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("erro sensor T01MP");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("reiniciando...");
delay(1250);
asm volatile (" jmp 0");
}
//serial dht
//Serial.println("Temperature:");
//Serial.println(t);
//Serial.println("humidity:");
//Serial.println(u);
//lcd dht
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T: ");
lcd.setCursor(2, 0);
lcd.print(t);
lcd.setCursor(8, 0);
lcd.print("U: ");
lcd.setCursor(11, 0);
lcd.print(u);
if(t > tmin && t < tmax){
lcd.setCursor(0, 2);
lcd.print("temp agradavel");
digitalWrite(Relay_ventilation, LOW);
}else{
lcd.setCursor(0, 2);
lcd.print("temp extremo");
digitalWrite(Relay_ventilation, HIGH);
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer, LOW);
delay(2000);
}
valor_analogico = analogRead(PIN_SENSOR);
//serial solo
//Serial.println("solo:");
//Serial.println(valor_analogico);
//lcd solo
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("solo:");
lcd.setCursor(7, 0);
lcd.print(valor_analogico);
if(valor_analogico > 300 && valor_analogico > 500){
lcd.setCursor(0, 2);
lcd.print("solo seco");
digitalWrite(buzzer, HIGH);
delay(250);
digitalWrite(buzzer, LOW);
delay(2000);
digitalWrite(Relay_irrigator, LOW );
}
if(valor_analogico > 800 && valor_analogico > 1024){
lcd.setCursor(0, 2);
lcd.print("solo umido");
digitalWrite(Relay_irrigator, HIGH);
}
//rgb
analogWrite(11, 255);
analogWrite(10, 125);
analogWrite(9, 255);
}
a outra programação que eu fiz pra teste:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(){
lcd.begin(16, 2);
}
void loop(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ola mundo!");
}
e o resultado smp é a mesma coisa do video
Olá.
A segunda, conforme video, precisa de um delay(); Ele está apagando e reescrevendo muitas vezes por segundo.
Mesmo o comando lcd.clear sequer precisa estar no loop().
O primeiro não deu pra acompanhar... Mas ponha um delay(250) por ex no loop que vc vai ver que resolve.
Melhor ainda se o clear for pro setup();
obrigado! funcionou !
Boa noite S,
se está resolvido, escreva a palavra RESOLVIDO antes do titulo do seu tópico.
RV
boa tarde !
ontem eu testei e deu tudo certo , fiz tudo novamente com a nova programação e funcionou ... e desliguei
porem quando fui ligar hj , novamente deu problema e o problema é que não esta aparecendo letra , por exemplo inves de aparecer "ola mundo" aparece apenas " ola mund"
Olá.
Anexe na mensagem a ultima versão que está quase funcionando... Aih da pra entender melhor.
Meu palpite é que antes do display ter tempo de escrever vc já comanda outra coisa como apagar.
está anexada é a ultima programação que funcionou e que agr parou de funcionou !
e fica dando quadrados branco , alguns falhando e outros cortados
No "olá mundo" também fica ?
Quadrado branco costuma ser erro de fiação/pinagem, não de programação. Uma vez inicializado ok ja´fica apagado...
As ligações são todas bem soldadas, com fios relativamente curtos ?
Verifique cada fio com o multímetro. Se um desligar pode ficar assim como vc falou.
mesmo com ola mundo fica faltando letras , como se fosse cortado
mostrarei no video anexado
Ok, mas manda o video e o programa que gera o video...
Senão não dá pra falar nada.
A mancha no canto inferior direito parece ser defeito, vazamento de cristal liquido provocado por impacto ou queimadura de sol. Acontece quando vc deixa na mesa com garrafas de agua, oculos ou qq coisa que tenha ou forme uma lente.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por