Вывод с DHT11 на LCD
- Войдите на сайт для отправки комментариев
Сб, 13/03/2021 - 17:37
Добрый день, прошу не кидаться камнями, только начинаю изучать ардуино. Вожусь с DHT11, хочу вывести данные на LCD дисплей. В конце концов с трудом что то да получилось, но есть два момента. 1)Не отображаются символы "T" "H" в начале, и градус целься в конце.( так же в конце "С" иногда проподает) 2) Не корректно отображаются данные с датчика, вместо условно 13% влажности пишет 1.00, вместо 26 градусов пишет 2.00 3) Иногда выдает на дисплее какую то чушь(при этом я ничего не трогал и не менял)
Код выложишь или гадать на картах таро предлагаешь?
хорошо, у тебя ошибка в строке №ХЗ.
Читать умеешь? Читай.
Типа библиотека DHT не в <> а в "" ?
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include "DHT.h" // назначение PIN и выбор типа датчика DHT #define DHTPIN 2 // // раскомментировать нужную строку #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); // инициализация сенсора DHT LiquidCrystal_I2C lcd(0x27,16,2); // инициализация дисплея byte symb_grad[8] = // кодирование символа градуса { B00111, B00101, B00111, B00000, B00000, B00000, B00000, }; void setup() { lcd.init(); // инициализация lcd lcd.backlight(); //включение подсветки дисплея lcd.createChar(1, symb_grad); // регистрируем собственный символ с кодом 1 Serial.begin(9600); // запуск передачи данных dht.begin(); // запуск датчика DHT } void loop() { // добавляем паузы в 2 секунды между измерениями delay(2000); float h = dht.readHumidity(); // считывание влажности float t = dht.readTemperature(); // считывание температуры if (isnan (h)||isnan (t)) { Serial.print("Ошибка считывания"); return; } Serial.print ("Влажность: "); Serial.print (h); Serial.print (" %\t"); Serial.print ("Температура: "); Serial.print (t); Serial.println (" c"); // Выводим показания влажности и температуры //lcd.clear(); // очистка экрана lcd.setCursor(0,0); //ставим курсор на 1 символ первой строки lcd.print(dht.readHumidity()); // печатаем сообщение на первой строке lcd.setCursor(5,0);//ставим курсор на 1 символ первой строки lcd.print(" %");//печатаем сообщение на первой строке lcd.setCursor(0,1); //ставим курсор на 1 символ первой строки lcd.print(dht.readTemperature()); lcd.setCursor(5,1); lcd.print(" \1C"); }ну начнем помолясь...
в какой строке выводится символ Т и Н на экран?
Я заново создал тему, видимо забанили)) На счет эти символов, это было в другом коде, все вывелось. В 60 и 64 строке по идее должен выводиться % и символ градуса и С, на сколько я понял. Но этого не происходит.
makssmr, сравните между собой строки 57, 59 и 61. Судя по комментариям, они все должны делать одно и то же, а цифры в них почему-то различаются.
Приведите код и комментарии в соответствии друг с другом и, думаю, проблема разрешится.
Upd: Впрочем, похоже, это не единственная ошибка, но исправьте пока эту.
Если я правильно разобрался, мы просто выбираем место на дисплее куда будет выводиться следующий print, мне кажется там все верно, а в комментарии думаю просто ошиблись
Вы думаете, я буду уговаривать Вас исправлять ошибки?
Не хотите - не надо.
Конечно хочу, просто я не понимаю что там можно исправить, код точь в точь как из источника, там одинаковые комментарии, и разные цифры. Я конечно попробую поиграться с ними , посмотрим
Надо не "играться", а четко понимать, что делаешь и зачем.
Способ изготовления скетчей a'la обезьяна за пишущей машинкой, как правило, не приводит ни к чему хорошему.
Ну а как тогда исправить ошибку о которой ты говоришь? Я взял код, и попытался разобраться в нем. Строки 57,59 и 61 я тебе выше сказал как я понял. Ты намекаешь на то что в этих строках есть проблема и не хочешь ее озвучить, остаётся только играться с разными вариантами.
a'la обезьяна за пишущей машинкой
Согласно известной одноименной теореме, рано или поздно это приведет к задуманному результату
Ну а как тогда исправить ошибку о которой ты говоришь? Я взял код, и попытался разобраться в нем. Строки 57,59 и 61 я тебе выше сказал как я понял. Ты намекаешь на то что в этих строках есть проблема и не хочешь ее озвучить, остаётся только играться с разными вариантами.
Намекаю - поправьте комментарии в соответсвии с тем, что в коде.