Ви не увійшли.
Сторінки 1
Привет.
Столкнулся с проблемой вывода информации.
К примеру при попытке вывода информации с датчика температуры 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 правильный, датчик температуры при проверке проверочным скетчем показывает правильные данные.
Неактивний
Имеете ввиду создание своего символа? Если и так, то при удалении кода этого символа и его упоминания должно было исправить эту проблему.
Брал этот
https://arduino-ua.com/prod663-LCD_20x4_shina_I2C
Остання редакція GroGaloraGran (2017-12-21 00:36:21)
Неактивний
Вот эта конструкция не выведет символ градуса
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); // Выводим символ градуса
Неактивний
Меня больше беспокоит, что не выводит корректно температуру (
Остання редакція GroGaloraGran (2017-12-21 11:58:11)
Неактивний
Символ выводится а температура некорректна. Место например 22.5 показывает 2.5.
Неактивний
А еще он текст выводит только если по 1 букве, только заметил..
Неактивний
Ура. Вопрос решен.
Проблему решила альтернативная библиотека для i2c.
Всем спасибо.
Остання редакція GroGaloraGran (2017-12-21 13:38:24)
Неактивний
Проблемма в библиотеке LiquidCrystal_I2C. Тута ссылка на рабочую.
Неактивний
Сторінки 1