Arduino погодная станция(Oregon) часы
- Войдите на сайт для отправки комментариев
Остался датчик от погодной станции 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р.
