Метиостанция

JORGE
Offline
Зарегистрирован: 23.05.2021

  // инициализация необходимых библиотек
#include <Device.h>
#include <iarduino_DHT.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <Wire.h>
#include <BMP280_DEV.h>

// инициализация датчиков и экрана
BMP280_DEV bmp280(10);
LiquidCrystal_I2C lcd(0x27,16,2);
iarduino_DHT sensor(A0);

// инициализация переменных и таймеров
float temperature, pressure, altitude; 
unsigned long taimer;

void setup() {
  Serial.begin(9600); // запуск монитора порта
  pinMode(5,OUTPUT);  // объявление пинов
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
   lcd.init();        // запуск дисплея
   lcd.setBacklight(255);
   lcd.setCursor(0,0);
   lcd.print("HELLO");
   lcd.setCursor(0,1);
   lcd.print("METEOSTATION");  
   bmp280.begin();    // запуск BMP280                              
  bmp280.setTimeStandby(TIME_STANDBY_2000MS);  
  bmp280.startNormalConversion(); 
}

void loop() {
  // проверяем исправность датчика DHT22
  switch(sensor.read()){   
    case DHT_OK:   Serial.print("OK");   break;
  }
  
  // считываем показания
  int t = sensor.tem;
  int h = sensor.hum;
  
  // выводим в монитор порта
  Serial.print("Humidity = ");
  Serial.print(h);
  Serial.print(" %\r");
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.println(" *C\r ");
  
  // условия сигнализации об уровне влажности
  if (h>60) {
    digitalWrite(6,LOW);
    digitalWrite(7,LOW);
    digitalWrite(5,HIGH);
  }
  if(h<35) {
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
  } 
  if(h>=35 && h<=60) {
    digitalWrite(6,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(5,LOW);
  }

  // считываем данные с датчика BMP280
  if (bmp280.getMeasurements(temperature, pressure, altitude))    
  {
    Serial.print(temperature);                        
    Serial.print(F("*C   "));
    Serial.print(pressure);    
    Serial.print(F("hPa   "));
    Serial.print(altitude);
    Serial.println(F("m"));  
  }

  // перевод значения давления из гекто-паскалей в миллиметры ртутного столба 
  int x = pressure*100/133;
 
  // вывод данных на экран дисплея
  if (millis() - taimer >1000) {
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("Tem=");
   lcd.print(t);
   lcd.print("C");
   lcd.setCursor(9,0);
   lcd.print("Hum=");
   lcd.print(h);
   lcd.print("%");
   lcd.setCursor(0,1);
   lcd.print("P=");
   lcd.print(x);
   lcd.print("mm");
   lcd.setCursor(9,1);
   lcd.print("A=");
   lcd.print(altitude);
   lcd.print("m");
   taimer = millis();
  }
}

 

 
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

И что это было?

Где схема?

Где описание?

Где фото?

Зачем это вообще нужно, и чем это лучше того, что сотнями валяется на просторах И-нета?

 

Ну и сразу вопрос по коду: зачем нужен одновременный вывод на экран и в последовательный порт?

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

andriano пишет:
сотнями валяется на просторах И-нета?
Там валяются метеостанции, а здесь - метиостанция.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да это тоже метеостанция, только её пометил кот. 

svm
Онлайн
Зарегистрирован: 06.11.2016

andriano пишет:

Ну и сразу вопрос по коду: зачем нужен одновременный вывод на экран и в последовательный порт?

На экран оно выводит информацию, а в сериал, серет все подряд:)

Ulliss
Offline
Зарегистрирован: 16.09.2019

А зачем использовать кроме BMP280 еще и DHT? BMP влажность и сам умеет измерять (в зависимости от модели).

что подключено к 5,6,7 пину? куда сигнализируете о влажности?

высоту для какого региона вы получаете? В библиотеке зашиваете давление на уровне моря для вашего региона? или пользуетесь библиотечным?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

"Метиостанция"...
Робот пылесос что ли ?

b707
Онлайн
Зарегистрирован: 26.05.2017

да лан. что накинулись. автору небось лет тринадцать :)