На дисплее выводится первые буквы и первые цифры

Wolf15

✩✩✩✩✩✩✩
3 Июн 2020
14
0
Помогите пожалуйста доделать скетч, на дисплей выводит с слова "Температура" букву Т, с слова "Влажность" букву В. И числа двоичные выводит только первую цифру.
 

Вложения

Lumenjer

★★★✩✩✩✩
10 Дек 2020
220
112
@Wolf15, Просто умножьте на 10 во время вывода, вот и костыльное решение вашей проблемы
lcd.print(temp*10);
lcd.print(hum*10);
Сейчас вопрос к библиотеке DHT, почему оттуда приходят такие значения, попробуйте на другую заменить
 

bort707

★★★★★★✩
21 Сен 2020
3,066
914
Решайте проблемы постепенно.
Выкиньте из текста всю работу с датчиком, измерение и печать температуры и влажности.
Сначала попробуйте вывести на экран слово " Temperature" латинскими буквами.
Выводится?
Если да - теперь добавьте свои символы и попробуйте напечатать слово " Температура" по русски.

Сделайте это и напишите результат - тогда продолжим.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Долго наблюдал за Вашими мучениями. Вот скачивать файл не хотелось совсем. Но вот песледний скачал. И увидел там 16 строк. Такие файлы лучше выкладывать кодом, вот так:
C++:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
  lcd.begin();                   
  lcd.backlight();                 
  lcd.setCursor(0,0);             
  lcd.print("Hello");   
}
void loop()
{
}
Далее, пробуйте примеры с библиотеками. Этот код у меня работает , но мне пришлось заменить begin на init
 

Wolf15

✩✩✩✩✩✩✩
3 Июн 2020
14
0
Оформи код соответствующим тэгом
нет этот код ничего не дал, выводится только первая буква. Весь текст выводится только когда пишешь по одной букве
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);


void setup()
{
lcd.begin();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("W");
lcd.setCursor(1,0);
lcd.print("o");
lcd.setCursor(2,0);
lcd.print("l");
lcd.setCursor(3,0);
lcd.print("f");
lcd.setCursor(4,0);
lcd.print("");
lcd.setCursor(5,0);
lcd.print("");
}
void loop()
{
}
но мне надо сделать чтобы заработал скетч "Температура и влажность" тот что выше
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Что то у вас не то с библиотекой.
Вопросы:
1) Какая версия arduino IDE ?
2) В каталоге с библиотекой есть файл library.properties, в нем описание библиотеки. Кто автор и какая версия ?
 

Wolf15

✩✩✩✩✩✩✩
3 Июн 2020
14
0
версия arduino IDE 1.8.15 вот все про библиотеку
name=LiquidCrystal_I2C
version=1.1.4
author=Frank de Brabander
maintainer=Marco Schwartz <[email protected]>
sentence=A library for I2C LCD displays.
paragraph= The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES.
category=Display
url=https://github.com/marcoschwartz/LiquidCrystal_I2C
architectures=avr
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Хм, именно эту библиотеку я и использовал. Она работает с init() и работает правильно и выводит полностью.
Полностью описывайте свое железо. Какой контроллер. Как i2c адаптер на дисплее, прям смотрите что там написано.
 
  • Лойс +1
Реакции: DAK

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Вот на микросхеме hw-061 что написано ?
Если к ардуино не подключать ничего другого, кроме дисплея тоже по одной букве ?
 

Wolf15

✩✩✩✩✩✩✩
3 Июн 2020
14
0
PCF8574T
HLF 1908

Если к ардуино не подключать ничего другого, кроме дисплея тоже по одной букве ?
Да только по одной букве
 

McDED

✩✩✩✩✩✩✩
23 Ноя 2021
1
0
Привет. У меня точно такая же проблема. Дисплей 1602 по I2C шине. На экран выводится только первый символ в строке. Библиотека LiquidCrystal_I2C загружена через ArduinoIDE. В эмуляторе wokwi.com всё прекрасно работает, а в реальности получаю то что получаю. Так же пробовал инициализировать через lcd.begin() и компилятор вообще послал меня куда подальше с формулировкой, что он не знает про begin.

:8:13: error: no matching function for call to 'LiquidCrystal_I2C::begin()'
lcd.begin();


При этом я открываю инстукцию к библиотеке и там написано, что begin в коде используется. Вот описание

# Methods and Functions (KEYWORD2)
###########################################
init KEYWORD2
begin KEYWORD2
clear KEYWORD2
home KEYWORD2


Как быть в этой чёртовой ситуации? Как заставить это всё работать?

Изученное программирование:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("0123456789123456");
  lcd.setCursor(0,1);
  lcd.print("0123456789123456");
}


void loop()
{
}
Нашел проблему. Косяк в самой библиотеке. Скачал новую с просторов инета LiquidCrystal_I2C_V112 и с ней всё отображается на ура. Странно то, что библиотека в ArduinoIDE точно такой же версии (пробовал даже старее) и с ней дисплей не дружил. Нашел информацию так же, что некоторые для решения этой проблемы используют LiquidCrystal_PCF8574. Вот такие вот дела.
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
@McDED, у меня тоже библиотека версии 1.1.2 и на ней всё нормально работает, просто для истории
library.properties:
name=LiquidCrystal I2C
version=1.1.2
author=Frank de Brabander
maintainer=Marco Schwartz <[email protected]>
sentence=A library for I2C LCD displays.
paragraph= The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES.
category=Display
url=https://github.com/marcoschwartz/LiquidCrystal_I2C
architectures=avr
 

bort707

★★★★★★✩
21 Сен 2020
3,066
914
Скачал новую с просторов инета LiquidCrystal_I2C_V112 и с ней всё отображается на ура. Странно то, что библиотека в ArduinoIDE точно такой же версии (пробовал даже старее) и с ней дисплей не дружил.
было бы полезно, если бы вы сравнили старую и новую библиотеку, например через diff

Добавка: - не знаю, вы ли это создали топик с таким же вопросом на arduino.cc, но там ответили, что это давно известный баг в библиотеке
 
Изменено:

Sofiia

✩✩✩✩✩✩✩
9 Янв 2024
2
0
Оформи код соответствующим тэгом, см. Правила
@Wolf15,
проще будет так

#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lsd(0x27, 20, 4);
char hum[9] = { 'H', 'u', 'm', 'i', 'd', 'i', 't', 'y', ':' };
char tem[12] = { 'T', 'e', 'm', 'p', 'e', 'r', 'a', 't', 'u', 'r', 'e', ':' };
void setup() {
lsd.init();
lsd.backlight();
dht.begin();
}
void loop() {
for (int i = 0; i < 9; i++) {
lsd.setCursor(i, 0);
lsd.print(hum);
for (int q = 0; q < 2; q++) {
int h = dht.readHumidity();
lsd.print(h);
}
}
for (int g = 0; g < 12; g++) {
lsd.setCursor(g, 1);
lsd.print(tem[g]);
for (int y = 0; y < 2; y++) {
int t = dht.readTemperature();
lsd.print(t);
}
}
}
 

Sofiia

✩✩✩✩✩✩✩
9 Янв 2024
2
0
Оформи код соответствующим тэгом, см. Правила
@Wolf15, @Wolf15,
вот код
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lsd(0x27, 20, 4);
char hum[9] = { 'H', 'u', 'm', 'i', 'd', 'i', 't', 'y', ':' };
char tem[12] = { 'T', 'e', 'm', 'p', 'e', 'r', 'a', 't', 'u', 'r', 'e', ':' };
void setup() {
lsd.init();
lsd.backlight();
dht.begin();
}
void loop() {
for (int i = 0; i < 9; i++) {
lsd.setCursor(i, 0);
lsd.print(hum);
for (int q = 0; q < 2; q++) {
int h = dht.readHumidity();
lsd.print(h);
}
}
for (int g = 0; g < 12; g++) {
lsd.setCursor(g, 1);
lsd.print(tem[g]);
for (int y = 0; y < 2; y++) {
int t = dht.readTemperature();
lsd.print(t);
}
}
}