Problemas con Display LCD 16X2 (GDM1602K),

Buenos Dia :).

Quería consultar por un problema que tengo con mi display LCD, en cual durante 2 semanas me funciono a la perfección (use los ejemplo que trae Arduino)y otras pruebas mias, pero desde hace un par de días me esta mostrando solo Basura (caracteres) en la pantalla ,lo mas extraño es que cada vez que subo el Sketch(El mismo Código) al Arduino ,me muestra caracteres diferentes en la pantalla, adjunto imágenes y el código, Ojala alguien me pueda orientar, o si alguien sabe si hay alguna manera de “Reiniciar” el display, se agradece.

PD:En este codigo, solo deseo que salga por pantalla la palabra “Arduino”, el resto de código esta comentado.

#include <LiquidCrystal.h>
#include <OneWire.h>

int DS18S20_Pin = 8; 
OneWire ds(DS18S20_Pin); 
int contador =1;
int BackLight = 13;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};

void setup(void) {
   Serial.begin(9600); 
   
   lcd.begin(16,2);
   lcd.setCursor(0,1);
   //lcd.noDisplay();
   //delay(5000);
   //lcd.display();
   //lcd.createChar(0, heart);
   //lcd.write(byte(0));
   lcd.println(" Arduino! ");
   
   pinMode(BackLight,OUTPUT);
   digitalWrite(BackLight,HIGH); 
   //delay (2000);  
}

void loop(void) {
 float temperature = getTemp();
 Serial.print(contador); Serial.print((char)32); 
 Serial.print(temperature); Serial.println (" Grados");
  
//Serial.println ((char)167);
//lcd.setCursor(0,1);
//lcd.println(contador);
 
 delay (2000);
 contador = contador++; 
}


float getTemp(){
 //returns the temperature from one DS18S20 in DEG Celsius

 byte data[12];
 byte addr[8];

 if ( !ds.search(addr)) {
   //no more sensors on chain, reset search
   ds.reset_search();
   return -1000;
 }

 if ( OneWire::crc8( addr, 7) != addr[7]) {
   Serial.println("CRC is not valid!");
   return -1000;
 }

 if ( addr[0] != 0x10 && addr[0] != 0x28) {
   Serial.print("Device is not recognized");
   return -1000;
 }

 ds.reset();
 ds.select(addr);
 ds.write(0x44,1); // start conversion, with parasite power on at the end

 byte present = ds.reset();
 ds.select(addr);  
 ds.write(0xBE); // Read Scratchpad

 
 for (int i = 0; i < 9; i++) { // we need 9 bytes
  data[i] = ds.read();
 }
 
 ds.reset_search();
 
 byte MSB = data[1];
 byte LSB = data[0];

 float tempRead = ((MSB << 8) | LSB); //using two's compliment
 float TemperatureSum = tempRead / 16;
 
 return TemperatureSum;
 
}





Me aseguras que todas las conexiones esta bien? esta alimentado correctamente? Revisa por favor y nos cuentas.

Buenas Surbyte.

Si esta todo bien conectado, he probado desconectando el sensor de temperatura y dejando solo la pantalla y me da el mismo error, y los mismos mensajes, yo igual pensé que podría ser un tema de falta de energía por tener conectado el sensor. la verdad no se que podria ser... tratare de buscar una solución hasta fin de mes, ya que encargue unas cosas y otra pantalla, para descartar que sea el LCD el que tenga el problema-.

Prueba con un ejemplo lcd de los que vienen con el IDE y nos cuentas.

Si ya revise esos sketch y revise las conexión un monton de vecess =(

Saludos Revisa los pines de datos hasta el controlador porque parece que no llegan los datos bien.

he yo tenia un problema parecido pero con una lcd I2C, el error estaba en esta linea:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Solo para Cerra el tema y agradecer los consejos, el tema ya se resolvio, ahora con mas tiempo, pude dessoldar todas las conexiones y volvi a soldarlas todas y cambiar los cables, imagino que alguna soldadura o algun cable se estropeo mientras trabajada..

|800x800

Hola buenas,
tengo un problema con mi display, el display cuando lo enciendo me funciona correctamente pero una vez que pulso un pulsador para que me saque un dato en el, me saca caracteres raros y conforme pulso me salen cosas raras y a demas de eso lo que pone se suele correr un espacio y asi… aqui os dejo el programa

#include <Wire.h>
#include <ClosedCube_OPT3001.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // ( RS, EN, d4, d5, d6, d7)

ClosedCube_OPT3001 opt3001_1,opt3001_2,opt3001_3; //Le asignamos la libreia a los diferentes sensores aqui definidos.
float nuevo;

void setup()
{
pinMode (13,INPUT);
pinMode (6,OUTPUT);
Serial.begin(9600);

opt3001_1.begin(0x44);
opt3001_2.begin(0x45);
opt3001_3.begin(0x46);
Serial.print(“OPT3001 Manufacturer ID”);
Serial.println(opt3001_1.readManufacturerID());
Serial.print(“OPT3001 ID del dispositivo”);
Serial.println(opt3001_1.readDeviceID());

configureSensor_1();
Serial.println(“Configuracion realizada”);
Serial.println("-------------");
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.write(" Sensor de “);
lcd.setCursor(0,1);
lcd.write(” Luminosidad ");
}

void loop()
{if (digitalRead (13)== 1){
delay(100);
OPT3001 result = opt3001_1.readResult(); //Lee lo que recibe del sensor 1.
printResult(“OPT3001”, result); //Manda el dato a la funcion printResult.
delay(500);
}
}

void configureSensor_1() {
OPT3001_Config newConfig; //Le cambiamos el nombre a “newConfig”

newConfig.RangeNumber = B1100; //Aqui configuramos el Sensor 1 con los parámetros deseados.
newConfig.ConvertionTime = B0;
newConfig.Latch = B1;
newConfig.ModeOfConversionOperation = B11;

OPT3001_ErrorCode errorConfig = opt3001_1.writeConfig(newConfig);
if (errorConfig != NO_ERROR)
printError(“OPT3001 configuration”, errorConfig); //En caso de tener un error, nos irá a print error y hay nor marcará la causa.
else {
OPT3001_Config sensorConfig = opt3001_1.readConfig(); //Si no hay errores, nos sacara los datos de configuración.
Serial.println(“OPT3001 Current Config:”);
Serial.println("------------------------------");

Serial.print(“Conversion ready (R):”);
Serial.println(sensorConfig.ConversionReady,HEX);

Serial.print(“Conversion time (R/W):”);
Serial.println(sensorConfig.ConvertionTime, HEX);

Serial.print(“Fault count field (R/W):”);
Serial.println(sensorConfig.FaultCount, HEX);

Serial.print(“Flag high field (R-only):”);
Serial.println(sensorConfig.FlagHigh, HEX);

Serial.print(“Flag low field (R-only):”);
Serial.println(sensorConfig.FlagLow, HEX);

Serial.print(“Latch field (R/W):”);
Serial.println(sensorConfig.Latch, HEX);

Serial.print(“Mask exponent field (R/W):”);
Serial.println(sensorConfig.MaskExponent, HEX);

Serial.print(“Mode of conversion operation (R/W):”);
Serial.println(sensorConfig.ModeOfConversionOperation, HEX);

Serial.print(“Polarity field (R/W):”);
Serial.println(sensorConfig.Polarity, HEX);

Serial.print(“Overflow flag (R-only):”);
Serial.println(sensorConfig.OverflowFlag, HEX);

Serial.print(“Range number (R/W):”);
Serial.println(sensorConfig.RangeNumber, HEX);

Serial.println("------------------------------");
}

}

void printResult(String text, OPT3001 result) {
//if (digitalRead (13)== 1){

Serial.print(text);
Serial.print(": “);
Serial.print(result.lux);
Serial.println(” lux");
float nuevo = result.lux; //le cabiamos el nombre a la variable result.lux a nuevo
nuevo = nuevo +1;
Serial.println(" “);
Serial.print(nuevo);
Serial.println(” luxen");
if (nuevo > 20 ) { //si Los lux de sensor son superiores a 20, se enciende el led de la salida 8
digitalWrite (6, HIGH);
Serial.println("---------------------CORRECTA-------------------------");
lcd.clear();
lcd.setCursor(0,0);
lcd.write(" SENSOR 1:");
lcd.setCursor(0,1);
lcd.write(" CORRECTO");
delay(3000);
digitalWrite (6, LOW);
lcd.clear();
}
else
{
digitalWrite (6, LOW);
Serial.println("---------------------INCORRECTA-------------------------");
lcd.clear();
lcd.setCursor(0,0);
lcd.write(" SENSOR 1 “);
lcd.setCursor(0,1);
lcd.write(” INCORRECTO");
delay(3000);
lcd.clear();

}
//

}

void printError(String text, OPT3001_ErrorCode error) { //Nos enseñara que tipo de error tenemos, en caso de tenerlo.
Serial.print(text);
Serial.print(": [ERROR] Code #");
Serial.println(error);
}

El post tiene mas de 120 días sin movimientos. No debes responder en post tan viejos. Se consideran en líneas generales salvo excepciones solucionados o terminados. Crea tu propio post, y lee las normas del foro. No se postea códigos como lo has hecho.