Zegar w stacji meteo pomocy

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
domel135
Młodszy majsterkowicz
Posty: 14
Rejestracja: 18 lut 2019, 17:20

Zegar w stacji meteo pomocy

Post autor: domel135 » 18 lut 2019, 17:37

Stacja pogodowa działa poprawnie lecz po dodaniu zegarka , wariuje on i podaje błędne odczyty.Sam zegar w osobnym programie działa ok
Pomocy

Kod: Zaznacz cały


//Dołączenie wymaganych bibliotek
#include <Wire.h>
#include <DHT.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
#include <DallasTemperature.h>
#include  <virtuabotixRTC.h>

LiquidCrystal_I2C lcd(0x27,20,4); //Definicja pinów do których podłączamy wyprowadzenia ekranu

virtuabotixRTC myRTC(7, 6, 5);

//Czujnik DHT11 22
#define DHTPIN 8 //Czujnik podłączony do cyfrowego pinu 2
#define DHTTYPE DHT22 //Definicja typu czujnik



DHT dht(DHTPIN, DHTTYPE); //Definicja czujnika, typ i numer pinu


//Czujnik DS18b20
#define ONE_WIRE_BUS 9 //Czujnik DS18B20 podłączony do cyfrowego pinu 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);



float wilgotnosc; //Zmienna przechowująca wilgotność
float temperatura; //Zmienna przechowująca temperaturę

void setup(){
  Serial.begin(9600);
  
 lcd.init(); //Inicjalizacja pracy LCD
 lcd.backlight();
 dht.begin(); //Inicjalizacja pracy czujnika DHT22
 sensors.begin();//inicjalizacja ds18b20

}

void loop() {
  wyswietl_czas(); //Wyświetlanie czasu i daty

  
 pomiar_wew(); //Wyświetlanie temperatury wewnętrznej
  delay(250);
  
 pomiar_zew(); //Wyświetlanie temperatury zewnętrznej
  delay(250);
  
}


void wyswietl_czas (void)
{

  myRTC.updateTime();
  lcd.setCursor(0,3);
  lcd.print(myRTC.dayofmonth);
  lcd.print("/");
  lcd.print(myRTC.month);
  lcd.print("/");
  lcd.print(myRTC.year);
  lcd.setCursor(11,3);
  lcd.print(myRTC.hours);
  lcd.print(":");
  lcd.print(myRTC.minutes);
  
  delay(500);
}

//Funkcja odczytująca i wyświetlająca pomiary
void pomiar_zew (void)
{
sensors.requestTemperatures();
  
  lcd.setCursor(0,0); //Ustawienie kursora w 0 kolumnie i 0 wierszu
  lcd.print("temp_zew");
  
  
  lcd.setCursor(10,0); //Ustawienie kursora w 8 kolumnie i 0 wierszu
  lcd.print(sensors.getTempCByIndex(0)); //Wyświetlenie temperatury
  lcd.print("*C ");
  
}
void pomiar_wew (void)
{
temperatura = dht.readTemperature();
wilgotnosc= dht.readHumidity();
  
  lcd.setCursor(0,1); //Ustawienie kursora w 0 kolumnie i 0 wierszu
  lcd.print("Temp");
  lcd.setCursor(0,2); //Ustawienie kursora w 0 kolumnie i 1 wierszu
  lcd.print("Wilg");
  
  lcd.setCursor(7,1); //Ustawienie kursora w 8 kolumnie i 0 wierszu
  lcd.print(temperatura); //Wyświetlenie temperatury
  lcd.print("*C ");
  lcd.setCursor(7,2);
  lcd.print(wilgotnosc);
  lcd.print("%");
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


domel135
Młodszy majsterkowicz
Posty: 14
Rejestracja: 18 lut 2019, 17:20

Re: Zegar w stacji meteo pomocy

Post autor: domel135 » 25 lut 2019, 18:53

Wklejam nowy program teraz działa ok

Kod: Zaznacz cały

//Dołączenie wymaganych bibliotek
#include <Wire.h>
#include <DHT.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
#include <DallasTemperature.h>
#include  <virtuabotixRTC.h>
#include "i2c.h"
#include "i2c_BMP280.h"



BMP280 bmp280;//INICJALIZACJA BMP280

LiquidCrystal_I2C lcd(0x27,20,4); //Definicja pinów do których podłączamy wyprowadzenia ekranu

virtuabotixRTC myRTC(13, 12, 11);

//Czujnik DHT11 22
#define DHTPIN 8 //Czujnik podłączony do cyfrowego pinu 2
#define DHTTYPE DHT22 //Definicja typu czujnik



DHT dht(DHTPIN, DHTTYPE); //Definicja czujnika, typ i numer pinu


//Czujnik DS18b20
#define ONE_WIRE_BUS 9 //Czujnik DS18B20 podłączony do cyfrowego pinu 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);



float wilgotnosc; //Zmienna przechowująca wilgotność
float temperatura; //Zmienna przechowująca temperaturę

void setup(){
  Serial.begin(9600);
  
 lcd.init(); //Inicjalizacja pracy LCD
 lcd.backlight();
 lcd.setCursor(5,0);
 lcd.print("Stacja");
  lcd.setCursor(5,1);
 lcd.print("pogodowa");
  lcd.setCursor(5,2);
 lcd.print("Arduino");
  lcd.setCursor(3,3);
 lcd.print("Kuba i Julcia");
 delay(3000);
 lcd.clear();
 dht.begin(); //Inicjalizacja pracy czujnika DHT22
 sensors.begin();//inicjalizacja ds18b20



 Serial.print("Probe BMP280: ");
    if (bmp280.initialize()) Serial.println("Sensor found");
    else
    {
        Serial.println("Sensor missing");
        while (1) {}
    }

    // onetime-measure:
    bmp280.setEnabled(0);
    bmp280.triggerMeasurement();



    

}

void loop() {
  cisnienie();//wyswietlanie cisnienia
  delay(250);
  
  wyswietl_czas(); //Wyświetlanie czasu i daty

  

  
 pomiar_wew(); //Wyświetlanie temperatury wewnętrznej
  delay(250);
  
 pomiar_zew(); //Wyświetlanie temperatury zewnętrznej
  delay(250);
  
}
void cisnienie (void)
{
  bmp280.awaitMeasurement();

    float temperature;
    bmp280.getTemperature(temperature);

    float pascal;
    bmp280.getPressure(pascal);

    static float meters, metersold;
    bmp280.getAltitude(meters);
    metersold = (metersold * 10 + meters)/11;

    bmp280.triggerMeasurement();

    lcd.setCursor(13,2);
    lcd.print(pascal/100,00);
    lcd.setCursor(17,2);
    lcd.print("hPA");

}

void wyswietl_czas (void)
{

  myRTC.updateTime();
  lcd.setCursor(0,3);
  if ((myRTC.dayofmonth)<10) lcd.print("0");
  lcd.print(myRTC.dayofmonth);
  lcd.print("/");
  if ((myRTC.month)<10) lcd.print("0");
  lcd.print(myRTC.month);
  lcd.print("/");
  if ((myRTC.year)<10) lcd.print("0");
  lcd.print(myRTC.year);
  lcd.setCursor(11,3);
  if ((myRTC.hours)<10) lcd.print("0");
  lcd.print(myRTC.hours);
  lcd.print(":");
  if ((myRTC.minutes)<10) lcd.print("0");
  lcd.print(myRTC.minutes);
  lcd.print(":");
  if ((myRTC.seconds)<10) lcd.print("0");
  lcd.print(myRTC.seconds);

  
  if ((myRTC.hours)<8) lcd.noBacklight();//gaszenie ekranu nocne
 
  if ((myRTC.hours)>8) lcd.backlight();//zapalanie podswietlania dzienne
  
  delay(250);
}

//Funkcja odczytująca i wyświetlająca pomiary
void pomiar_zew (void)
{
sensors.requestTemperatures();
  
  lcd.setCursor(0,0); //Ustawienie kursora w 0 kolumnie i 0 wierszu
  lcd.print("temp_zew");
  
  
  lcd.setCursor(10,0); //Ustawienie kursora w 8 kolumnie i 0 wierszu
  lcd.print(sensors.getTempCByIndex(0)); //Wyświetlenie temperatury
  lcd.print("*C ");
  
}
void pomiar_wew (void)
{
temperatura = dht.readTemperature();
wilgotnosc= dht.readHumidity();
  
  lcd.setCursor(0,1); //Ustawienie kursora w 0 kolumnie i 0 wierszu
  lcd.print("Temp");
  lcd.setCursor(0,2); //Ustawienie kursora w 0 kolumnie i 1 wierszu
  lcd.print("Wilg");
  
  lcd.setCursor(6,1); //Ustawienie kursora w 8 kolumnie i 0 wierszu
  lcd.print(temperatura); //Wyświetlenie temperatury
  lcd.print("*C ");
  lcd.setCursor(6,2);
  lcd.print(wilgotnosc);
  lcd.print("%");
}
domel135
Młodszy majsterkowicz
Posty: 14
Rejestracja: 18 lut 2019, 17:20

Re: Zegar w stacji meteo pomocy

Post autor: domel135 » 25 lut 2019, 18:59

Ps jak wkleić program tak ładnie jak wyżej w poście
ODPOWIEDZ

Strony partnerskie: