LCD con I2C no me da letras, me salen signos extraños

soy nuevo en esto de Arduino por lo que no le se mucho. Al momento de pasar el programa a Arduino, el programa es para un sensor de temperatura Ds18b20 y la lectura del sensor me lo debe de mostrar en el LCD pero en vez de palabras me salen signos extraños o a veces no me aparece nada, ayuda.
Gracias y buena tarde

Este es el código:

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define ONE_WIRE_BUS 2 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
  
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  sensors.begin();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("DS18B20 TEST!");
  lcd.setCursor(0, 1);
  delay(2000);
  lcd.clear();
}

void loop(void)
{

  sensors.requestTemperatures();
  float tempC = sensors.getTempCByIndex(0);
  if (tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.print("Temperatura: ");
    Serial.println(tempC);
    lcd.setCursor(0, 0);
    lcd.print("Temperatura:");
    lcd.setCursor(0, 1);
    lcd.print(tempC);
    lcd.print((char)223);
    lcd.print("C");
    lcd.print(" | ");
    lcd.print(DallasTemperature::toFahrenheit(tempC));
    lcd.print(" F");
  }
  else
  {
    Serial.println("Error: Could not read temperature data");
  }
}



Please use English language in the English language forum sections.

Moved to the Spanish section of the forum.

¿Que muestra el monitor serie?

@gonpezzi
Muestra la temperatura que da el sensor, ejemplo

Temperatura:28.00

No he podido comprobar la parte del sensor ya que no tengo nada que probar con el " oneWire". Si he probado la parte de tu código referente a la LCD y me funciona correctamente.
No se, revisa conexionado, prueba otra LCD si tienes. El código que utilice de prueba es el tuyo ligeramente modificado que presenta correctamente todos los mensajes el la LCD, pruébalo y cuentas:

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{

  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  sensors.begin();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("  DS18B20 TEST!");
  lcd.setCursor(0, 1);
  delay(2000);
  lcd.clear();
}

void loop(void)
{

  sensors.requestTemperatures();
  float tempC = sensors.getTempCByIndex(0);
  if (tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.print("Temperatura: ");
    Serial.println(tempC);
    lcd.setCursor(0, 0);
    lcd.print("Temperatura:");
    lcd.setCursor(0, 1);
    lcd.print(tempC);
    lcd.print((char)223);
    lcd.print("C");
    lcd.print(" | ");
    lcd.print(DallasTemperature::toFahrenheit(tempC));
    lcd.print(" F");
  }
  else
  {
    Serial.println("Error: Could not read temperature data");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("  Error lectura");  }
    lcd.setCursor(0, 1);
    lcd.print("     Sensor");
}

@gonpezzi
No me muestra nada el LCD todavía, el monitor serie si me muestra la temperatura pero el LCD no me muestra nada, voy a probar con el LCD sin I2C pero tengo que investigar como se tiene que conectar junto con el sensor, lo hago y comento si funciono o no

¿Estas seguro de que la dirección de la pantalla lcd es esa?

1 Like

Buena observación la de @marcolaguna5181

Si la pantalla está equipada con el PCF8574 la dirección por defecto es 0x27 pero si tiene el PCF8574A la dirección por defecto es 0x3F.

Ejecuta el código I2C scanner que está entre los ejemplos de la IDE para asegurarte la dirección correcta de la LCD.

Me ha pasado muchas veces ésto, intenta comprobar la dirección del I2C, y sobre todo, las conexiones de los pines, suele pasar que no hacen contacto todos los pines y pasa eso, haz un poco de presión a ver si ya funciona

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.