#1 2017-12-21 00:08:12

GroGaloraGran
Участник
Из Киев
Зарегистрирован: 2017-05-17
Сообщений: 14

Проблема с lcd 2004 i2c

Привет.
Столкнулся с проблемой вывода информации.
К примеру при попытке вывода информации с датчика температуры dht21 по рабочему скетчу (из сети) выводит место, например, 24.5 градуса только 2.5 на экран.
Пример кода

include <Wire.h>        // Добавляем необходимые библиотеки
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 2     // пин для сигнала поступающего с датчика

//выбор используемого датчика
//#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
#define DHTTYPE DHT21   // DHT 21 (AM2301)

//инициализация датчика
DHT dht(DHTPIN, DHTTYPE);

byte degree[8] =      // кодируем символ градуса
{
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};    

 
LiquidCrystal_I2C lcd(0x27,20,4);   // Задаем адрес и размерность дисплея

void setup() {
  lcd.begin();                       // Инициализация lcd             
  lcd.backlight();                  // Включаем подсветку
  lcd.createChar(1, degree);        // Создаем символ под номером 1
  
   Serial.begin(9600);  
  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  
  // Выводим показания влажности и температуры
  lcd.setCursor(0, 0);            // Устанавливаем курсор в начало 1 строки
  lcd.print("Hum  =     % ");     // Выводим текст
  lcd.setCursor(7, 0);            // Устанавливаем курсор на 7 символ
  lcd.print(h, 1);                // Выводим на экран значение влажности
  lcd.setCursor(0, 1);            // Устанавливаем курсор в начало 2 строки
  lcd.print("Temp =     \1C ");   // Выводим текст, \1 - значок градуса
  lcd.setCursor(7, 1);            // Устанавливаем курсор на 7 символ 
  lcd.print(t,1);                 // Выводим значение температуры
}

Адрес i2c правильный, датчик температуры при проверке проверочным скетчем показывает правильные данные.

#2 2017-12-21 00:33:01

GroGaloraGran
Участник
Из Киев
Зарегистрирован: 2017-05-17
Сообщений: 14

Re: Проблема с lcd 2004 i2c

Имеете ввиду создание своего символа? Если и так, то при удалении кода этого символа и его упоминания должно было исправить эту проблему.
Брал этот
https://arduino-ua.com/prod663-LCD_20x4_shina_I2C

Редактировался GroGaloraGran (2017-12-21 00:36:21)

#3 2017-12-21 11:32:47

void loop
Участник
Зарегистрирован: 2016-10-20
Сообщений: 22

Re: Проблема с lcd 2004 i2c

Вот эта конструкция не выведет символ градуса

lcd.print("Temp =     \1C ");   // Выводим текст, \1 - значок градуса

Должно быть

  lcd.print("Temp =        C ");   // Выводим текст
  lcd.setCursor(7, 1);            // Устанавливаем курсор на 7 символ 
  lcd.print(t,1);                 // Выводим значение температуры
  lcd.setCursor(12, 1);            // Устанавливаем курсор на 12 символ
  lcd.write(1);                 // Выводим символ градуса

#4 2017-12-21 11:57:45

GroGaloraGran
Участник
Из Киев
Зарегистрирован: 2017-05-17
Сообщений: 14

Re: Проблема с lcd 2004 i2c

Меня больше беспокоит, что не выводит корректно температуру (

pslcmvnzaeo208rzohg7xhjet.jpg

Редактировался GroGaloraGran (2017-12-21 11:58:11)

#5 2017-12-21 12:20:41

GroGaloraGran
Участник
Из Киев
Зарегистрирован: 2017-05-17
Сообщений: 14

Re: Проблема с lcd 2004 i2c

Символ выводится а температура некорректна. Место например 22.5 показывает 2.5.

#6 2017-12-21 13:08:48

GroGaloraGran
Участник
Из Киев
Зарегистрирован: 2017-05-17
Сообщений: 14

Re: Проблема с lcd 2004 i2c

А еще он текст выводит только если по 1 букве, только заметил..

#7 2017-12-21 13:37:50

GroGaloraGran
Участник
Из Киев
Зарегистрирован: 2017-05-17
Сообщений: 14

Re: Проблема с lcd 2004 i2c

Ура. Вопрос решен.
9jisugaiynt8z8ros5petbq9o.jpg
Проблему решила альтернативная библиотека для i2c.
Всем спасибо.

Редактировался GroGaloraGran (2017-12-21 13:38:24)

#8 2018-03-05 20:03:32

melsem
Участник
Зарегистрирован: 2018-03-05
Сообщений: 2

Re: Проблема с lcd 2004 i2c

Проблемма в библиотеке LiquidCrystal_I2C. Тута ссылка на рабочую.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела