Не показывает на дисплее значения датчиков!

VanyaDrug
Offline
Зарегистрирован: 22.07.2018

#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 дисплей. Помогите, пожалуйста!

sadman41
Offline
Зарегистрирован: 19.10.2016

А что показывает?

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

VanyaDrug пишет:
Почему-то не выводятся значения с датчиков

И с чего бы это?

VanyaDrug пишет:

  byte h = dht.readHumidity();    // считываем значение температуры
  byte t = dht.readTemperature(); // считываем значение влажности

1. Значения функций readHumidity и readTemperature присваиваются переменным типа byte. Они действительно возвращают значения этого типа, или тут что-то не так?

2. В комментариях точно ничего не перепутано?

VanyaDrug
Offline
Зарегистрирован: 22.07.2018

Вместо значений показывает 0. Подключение проверил, вроде всё правильно.

b707
Offline
Зарегистрирован: 26.05.2017

ЕвгенийП пишет:

1. Значения функций readHumidity и readTemperature присваиваются переменным типа byte. Они действительно возвращают значения этого типа, или тут что-то не так?

Евгений, по-моему, в данном случае это не важно

b707
Offline
Зарегистрирован: 26.05.2017

VanyaDrug пишет:

Подключение проверил, вроде всё правильно.

выведите значения h и t в Сериал и посмотрите, что там

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Слона надо есть по частям. Исправлять ошибки по мере нахождения. А там видно будет, что важно, а что нет.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

дисплей объявлен как 20х2. Я таких никогда не видел.

 

Клапауций 003
Offline
Зарегистрирован: 20.07.2019

wdrakula пишет:

дисплей объявлен как 20х2. Я таких никогда не видел.

я запретил lcd 2002 на РФ - контрабандные партии приказал давить бульдозерами.

WH2002M-YYH.jpg

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня 20x2 от винстара: https://www.chipdip.ru/product/wh2002a-ygh-ct , в чипдипе и брал, только в стародавние времена.

vvadim
Онлайн
Зарегистрирован: 23.05.2012

lcd.createChar(1, gradus);

должно быть

lcd.createChar(0, gradus);

символов за раз объявляется 8,
последний

lcd.createChar(7, D);

Kakmyc
Онлайн
Зарегистрирован: 15.01.2018

Забыл сетапу рассказать, что :"датчик нужен, мамой клянусь..."

dht.begin();

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

И, вообще, перед тем как орать на весь форум - не выводит на дисплей, проверьте, а выводит-ли на серийный порт. Да и вообще - есть ли данные для вывода. Потом забейте константные данные. А потом орите, что не читает с датчика или не показывает дисплей. ИМХО.