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р.