Не показывает на дисплее значения датчиков!
- Войдите на сайт для отправки комментариев
Пнд, 02/12/2019 - 20:19
#include <SFE_BMP180.h>
#include <TimeLib.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,2);
#include <DHT.h>
DHT dht(2, DHT11);
SFE_BMP180 pressure;
byte BUTTON=4;
byte gradus[8] = {
0b01100,0b10010,0b10010,0b01100,0b00000,0b00000,0b00000,0b00000
};
byte P[8] = {
0b11111,0b10001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000
};
byte Y[8] = {
0b10001,0b10001,0b10001,0b01111,0b00001,0b00001,0b01110,0b00000
};
"
byte L[8] = {
0b00111,0b01001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000
};
// создаем русскую букву "Ж"
byte ZH[8] = {
0b10101,0b10101,0b10101,0b01110,0b10101,0b10101,0b10101,0b00000
};
byte znak[8] = {
0b10000,0b10000,0b10000,0b11110,0b10001,0b10001,0b11110,0b00000
};
byte YA[8] = {
0b01111,
0b10001,
0b10001,
0b01111,
0b00101,
0b01001,
0b10001,
0b00000
};
byte D[8] = {
0b00100,
0b01010,
0b01010,
0b01010,
0b11111,
0b10001,
0b10001,
0b00000
};
byte I[8] = {
0b10001,
0b10011,
0b10101,
0b10101,
0b10101,
0b11001,
0b10001,
0b00000
};
void setup() {
pinMode (BUTTON, INPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.createChar(1, gradus);
lcd.createChar(2, P);
lcd.createChar(3, Y);
lcd.createChar(4, L);
lcd.createChar(5, ZH);
lcd.createChar(6, znak);
lcd.createChar(7, YA);
lcd.createChar(8, D);
lcd.createChar(9, I);
setTime (15, 54, 0, 7, 21, 2018);
}
void loop() {
// если нужны точные значение, то используйте float, вместо byte
byte h = dht.readHumidity(); // считываем значение температуры
byte t = dht.readTemperature(); // считываем значение влажности
char status;
double P,T;
status = pressure.startPressure(3);
if (status != 0)
{
// ждем окончания замера:
delay(status);
status = pressure.getPressure(P,T);
if (status != 0)
{
Serial.print("абсолютное давление: ");
Serial.print(P/133.3);
Serial.println(" милиметров ртутного столба");
}
else Serial.println("ошибка получение давления\n");
}
else Serial.println("ошибка запуска получения давления\n");
delay(1000);
lcd.setCursor(0,0);
lcd.print("TEM");
lcd.print(char(2));
lcd.print(":");
lcd.print(t);
lcd.print(char(1));
lcd.print(" ");
lcd.print("B");
lcd.print(char(4));
lcd.print(":");
lcd.print(h);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print(char(8));
lcd.print("AB");
lcd.print(char(4));
lcd.print(":");
lcd.print(P/133.3);
lcd.print("MM.PT.CT");
delay(100);
}
Это код. Делаю метеостанцию. Почему-то не выводятся значения с датчиков на LCD дисплей. Помогите, пожалуйста!
А что показывает?
И с чего бы это?
1. Значения функций readHumidity и readTemperature присваиваются переменным типа byte. Они действительно возвращают значения этого типа, или тут что-то не так?
2. В комментариях точно ничего не перепутано?
Вместо значений показывает 0. Подключение проверил, вроде всё правильно.
1. Значения функций readHumidity и readTemperature присваиваются переменным типа byte. Они действительно возвращают значения этого типа, или тут что-то не так?
Евгений, по-моему, в данном случае это не важно
Подключение проверил, вроде всё правильно.
выведите значения h и t в Сериал и посмотрите, что там
Слона надо есть по частям. Исправлять ошибки по мере нахождения. А там видно будет, что важно, а что нет.
дисплей объявлен как 20х2. Я таких никогда не видел.
дисплей объявлен как 20х2. Я таких никогда не видел.
я запретил lcd 2002 на РФ - контрабандные партии приказал давить бульдозерами.
У меня 20x2 от винстара: https://www.chipdip.ru/product/wh2002a-ygh-ct , в чипдипе и брал, только в стародавние времена.
lcd.createChar(1, gradus);должно бытьlcd.createChar(0, gradus);символов за раз объявляется 8,
последний
lcd.createChar(7, D);Забыл сетапу рассказать, что :"датчик нужен, мамой клянусь..."
dht.begin();
И, вообще, перед тем как орать на весь форум - не выводит на дисплей, проверьте, а выводит-ли на серийный порт. Да и вообще - есть ли данные для вывода. Потом забейте константные данные. А потом орите, что не читает с датчика или не показывает дисплей. ИМХО.