Arduino погодная станция(Oregon) часы

Нет ответов
Timuridze
Offline
Зарегистрирован: 22.03.2015

Остался датчик от погодной станции Oregon, хочу сделать выводить температуру на экран и заодно время/дату. 

Библиотеку работы с датчиком взял тут, пользуясь случаем огромное спасибо автору, пример там же немного модифицировал.

В настоящий момент что работает.

1. Выводит время, дату.

2. Выводит температуру

Что хочется:

1. Сделать подсветку экрана отключаемой. Так как сам модуль висит в прихожей на ум приходит PIR датчик. При приближении включать подсветку скажем секунд на 5.

2. Сделать экран переключаемый. Например 3 секунды показывае дату время, 3 секунду Температуру с погодной станции и с датчика DHT.

3. Датчик DHT22, не могу понять но стандартные примеры  не работают, возможно нужно подобрать резистор, пробовал 10кОм с ним не работает.

4. Какие то мелочи не принципиальные. Например значок градуса, или почему то минуты(с 0 по 9) отображаются одной цифрой, странно выглядит напрмер 19:00 выглядит как 19:0, непонятно почему. Ну и хотелось бы 24 часовй формат даты времени конечно

#include <Oregon_NR.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"

#define UNO
#define pirPin 4
#define ledPin 13

#define CYCLE_3_TIME 2000  // время цикла 
unsigned int timerCount3; // счетчик таймера

//Oregon_NR oregon(2, 0,13); // Для Arduino UNO/Nano - датчик на выводе D2, Прерывание 0, Светодиод приёма на вывод 13
Oregon_NR oregon(2, 0); // Если светодиод не нужен
LiquidCrystal_I2C lcd(0x27,20,4); 

RTC_DS1307 rtc;

void setup() {
   Serial.begin(115200);
  //вкючение прослушивания радиоканала  
  pinMode(pirPin, INPUT);
  pinMode(ledPin,OUTPUT);
  
  oregon.start(); 
 
 lcd.init();  
  lcd.backlight();
//rtc.adjust(DateTime(2017, 6, 14, 7, 8, 0));

}

void loop() {

   timerCount3++;  // + 1 к счетчику таймера 
  if ( timerCount3 >= CYCLE_3_TIME ) {

    DateTime now = rtc.now();
    
    lcd.setCursor(0,1);
    lcd.setCursor(0,1);
    lcd.print(now.day(), DEC);
    lcd.print('.');
    lcd.print(now.month(), DEC);
    lcd.print('.');
    lcd.print(now.year(), DEC);
    lcd.print(' ');
    lcd.print(now.hour(), DEC);
    lcd.print(':');
    lcd.print(now.minute(), DEC);
     //   lcd.print(':');
    //  lcd.print(now.second(), DEC);
    timerCount3= 0;     // сброс счетчика
    // код программы вызывается каждые 4000 мс    
  }  

    
  //////////////////////////////////////////////////////////////////////
  //Захват пакета,//////////////////////////////////////////////

  oregon.capture(1);
  //Захваченные данные годны до следующего вызова capture
  //ОБработка полученного пакета//////////////////////////////////////////////
  if (oregon.captured)  {
    //Вывод информации в Serial
    
    
    if ((oregon.sens_type == THGN132 || oregon.sens_type == THN132) && oregon.crc_c){
      lcd.setCursor(0,0);
      
      if (oregon.sens_tmp > 0 && oregon.sens_tmp < 10) lcd.print("TMP:  ");
      if (oregon.sens_tmp < 0 && oregon.sens_tmp >-10) lcd.print("TMP: ");
      if (oregon.sens_tmp <= -10) lcd.print("TMP:");
      if (oregon.sens_tmp >= 10) lcd.print("TMP: ");
      lcd.print(oregon.sens_tmp, 1);

    
     lcd.print("C ");
     
      
      // lcd.print("BAT:");
      if (oregon.sens_battery==false) lcd.print("bat!!!");
  
      
    Serial.print(oregon.sens_tmp, 1);
      Serial.print("C ");
        
    }
   
  }
}

Человеку который поможет мне реализовать хотелки вышлю банку пива почтой или денежный эквивалент 250р.