Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 135
Из них просматривают:
Аналоги: 56. Видео: 36. Даташиты: 6. Инструкции: 3. Кроссворд: 2. Магазин: 1. Новости: 4. Обзор: 4. Остальное: 3. Программы: 1. Производители: 3. Профиль пользователя: 1. Форум: 15.
Участников: 2
Гостей: 133

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Просмотр этой темы: 

 1 анонимных пользователей
Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2537
Не в сети
Метеостанция умеет измерять и выводить на дисплей такие погодные параметры, как температуру в градусах, влажность в процентах и среднюю скорость ветра в метрах в секунду за период в одну минуту. Рядом с каждым параметром отображается словесное пояснение на русском языке. При штормовом ветре станция начнёт издавать прерывистый звуковой сигнал.
Схема собрана на плате Arduino Uno. Дисплей - WH2004A-YGH-CTK. Датчик температуры и влажности – DTH11. Скорость ветра измеряется датчиком Холла – KY003. Источник звукового сигнала – модуль с бузером .
Проект написан в программе FLProg. Сам проект и библиотеки для DTH11 и дисплея с поддержкой кириллицы предоставлены к статье в zip-архивах.
Открыть изображение в новом окне


И напоследок самое страшное, код:
#include <LiquidCrystalRus.h>
#include "DHT_NEW.h"
LiquidCrystalRus disp(6791045);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;

DHT _dht1;

int _disp19oldLength 0;
unsigned long _SCT_2 0UL;
unsigned long _SCT_2IC 0UL;
unsigned long _SCT_2P 0UL;
int _disp26oldLength 0;
int _disp17oldLength 0;
bool _gen3I 0;
bool _gen3O 0;
unsigned long _gen3P 0UL;
unsigned long _dht1LRT 0UL;
unsigned long _dht1Tti 0UL;
int _disp18oldLength 0;
int _disp15oldLength 0;
int _disp3oldLength 0;
int _disp2oldLength 0;
int _disp32oldLength 0;
int _disp31oldLength 0;
int _disp14oldLength 0;
int _disp30oldLength 0;
int _disp13oldLength 0;
int _disp29oldLength 0;
int _disp12oldLength 0;
int _disp28oldLength 0;
int _disp11oldLength 0;
int _disp27oldLength 0;
bool _gen2I 0;
bool _gen2O 0;
unsigned long _gen2P 0UL;
int _disp10oldLength 0;
int _disp25oldLength 0;
bool _gen1I 0;
bool _gen1O 0;
unsigned long _gen1P 0UL;
int _disp9oldLength 0;
int _disp24oldLength 0;
int _disp8oldLength 0;
int _BytesToWord_1_Out 0;
int _disp22oldLength 0;
int _disp7oldLength 0;
int _disp21oldLength 0;
int _disp6oldLength 0;
int _disp5oldLength 0;
int _BytesToWord_3_Out 0;
int _disp20oldLength 0;
int _disp4oldLength 0;
int _disp1oldLength 0;
int _disp23oldLength 0;
void setup()
{
pinMode(16OUTPUT); 

disp.begin(204);
pinMode(2INPUT);
_SCT_2P=micros();
attachInterruptdigitalPinToInterrupt (2), _SCT_2coutFunctionFALLING);
_dht1.setup(8);
_dht1LRT millis();
_dht1Tti millis(); 
}
void loop()
{if (
_isNeedClearDisp1) {disp.clear(); _isNeedClearDisp10;}





//Плата: Метеостанция v.1.00
if (!(0)) {
_dispTempLength1 = (String("Метеостанция v.1.00")).length();
if (
_disp2oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp2oldLength _dispTempLength1;
disp.setCursor(00);
disp.print(String("Метеостанция v.1.00"));
} else {
if (
_disp2oldLength 0) {_isNeedClearDisp1 1_disp2oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("C")).length();
if (
_disp26oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp26oldLength _dispTempLength1;
disp.setCursor(41);
disp.print(String("C"));
} else {
if (
_disp26oldLength 0) {_isNeedClearDisp1 1_disp26oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("t")).length();
if (
_disp1oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp1oldLength _dispTempLength1;
disp.setCursor(01);
disp.print(String("t"));
} else {
if (
_disp1oldLength 0) {_isNeedClearDisp1 1_disp1oldLength 0;} 
}
if(
_isTimer(_dht1Tti1000)) {
if(
_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
_dht1.readSensor();
_dht1LRT millis(); 
_dht1Tti millis(); 
}
}
if (!(
0)) {
_dispTempLength1 = ((( _floatToStringWitRaz(_dht1.humidity,0)))).length();
if (
_disp17oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp17oldLength _dispTempLength1;
disp.setCursor(22);
disp.print((( _floatToStringWitRaz(_dht1.humidity,0))));
} else {
if (
_disp17oldLength 0) {_isNeedClearDisp1 1_disp17oldLength 0;} 
}
_BytesToWord_3_Out word(0_dht1.humidity);
if ((
_BytesToWord_3_Out) >= (70)) {
_dispTempLength1 = (String("Влажно")).length();
if (
_disp7oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp7oldLength _dispTempLength1;
disp.setCursor(62);
disp.print(String("Влажно"));
} else {
if (
_disp7oldLength 0) {_isNeedClearDisp1 1_disp7oldLength 0;} 
}
if (( ((
_BytesToWord_3_Out) >= (40)) && ((_BytesToWord_3_Out) < (70)) )) {
_dispTempLength1 = (String("Норма")).length();
if (
_disp6oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp6oldLength _dispTempLength1;
disp.setCursor(62);
disp.print(String("Норма"));
} else {
if (
_disp6oldLength 0) {_isNeedClearDisp1 1_disp6oldLength 0;} 
}
if ((
_BytesToWord_3_Out) < (40)) {
_dispTempLength1 = (String("Сухо")).length();
if (
_disp5oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp5oldLength _dispTempLength1;
disp.setCursor(62);
disp.print(String("Сухо"));
} else {
if (
_disp5oldLength 0) {_isNeedClearDisp1 1_disp5oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = ((( _floatToStringWitRaz(_dht1.temperature,0)))).length();
if (
_disp3oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp3oldLength _dispTempLength1;
disp.setCursor(21);
disp.print((( _floatToStringWitRaz(_dht1.temperature,0))));
} else {
if (
_disp3oldLength 0) {_isNeedClearDisp1 1_disp3oldLength 0;} 
}
_BytesToWord_1_Out word(0_dht1.temperature);
if (( ((
_BytesToWord_1_Out) >= (20)) && ((_BytesToWord_1_Out) < (25)) )) {
_dispTempLength1 = (String("Тепло")).length();
if (
_disp12oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp12oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Тепло"));
} else {
if (
_disp12oldLength 0) {_isNeedClearDisp1 1_disp12oldLength 0;} 
}
if (( ((
_BytesToWord_1_Out) >= (15)) && ((_BytesToWord_1_Out) < (20)) )) {
_dispTempLength1 = (String("Комфортно")).length();
if (
_disp11oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp11oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Комфортно"));
} else {
if (
_disp11oldLength 0) {_isNeedClearDisp1 1_disp11oldLength 0;} 
}
if ((
_BytesToWord_1_Out) >= (25)) { if (! _gen2I) { _gen2I 1_gen2O 1_gen2P millis(); } } else { _gen2I _gen2O0;}
 if (
_gen2I) {  if ( _isTimer _gen2P 500 )) { _gen2P millis(); _gen2O = ! _gen2O;}}
if (
_gen2O) {
_dispTempLength1 = (String("Жарко")).length();
if (
_disp10oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp10oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Жарко"));
} else {
if (
_disp10oldLength 0) {_isNeedClearDisp1 1_disp10oldLength 0;} 
}
if (( ((
_BytesToWord_1_Out) >= (10)) && ((_BytesToWord_1_Out) < (15)) )) {
_dispTempLength1 = (String("Прохладно")).length();
if (
_disp9oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp9oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Прохладно"));
} else {
if (
_disp9oldLength 0) {_isNeedClearDisp1 1_disp9oldLength 0;} 
}
if ((
_BytesToWord_1_Out) < (10)) { if (! _gen1I) { _gen1I 1_gen1O 1_gen1P millis(); } } else { _gen1I _gen1O0;}
 if (
_gen1I) {  if ( _isTimer _gen1P 500 )) { _gen1P millis(); _gen1O = ! _gen1O;}}
if (
_gen1O) {
_dispTempLength1 = (String("Холодно")).length();
if (
_disp8oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp8oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Холодно"));
} else {
if (
_disp8oldLength 0) {_isNeedClearDisp1 1_disp8oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("%")).length();
if (
_disp23oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp23oldLength _dispTempLength1;
disp.setCursor(42);
disp.print(String("%"));
} else {
if (
_disp23oldLength 0) {_isNeedClearDisp1 1_disp23oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("h:")).length();
if (
_disp4oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp4oldLength _dispTempLength1;
disp.setCursor(02);
disp.print(String("h:"));
} else {
if (
_disp4oldLength 0) {_isNeedClearDisp1 1_disp4oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("м/с")).length();
if (
_disp15oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp15oldLength _dispTempLength1;
disp.setCursor(43);
disp.print(String("м/с"));
} else {
if (
_disp15oldLength 0) {_isNeedClearDisp1 1_disp15oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("v:")).length();
if (
_disp32oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp32oldLength _dispTempLength1;
disp.setCursor(03);
disp.print(String("v:"));
} else {
if (
_disp32oldLength 0) {_isNeedClearDisp1 1_disp32oldLength 0;} 
}
if((( 
micros()-_SCT_2P) >60000000)||(( micros()-_SCT_2P) <0)){_SCT_2 _SCT_2IC;_SCT_2IC=0;_SCT_2P micros();}
if ((((
3.00)*(_SCT_2))/(60)) > (24.00)) { if (! _gen3I) { _gen3I 1_gen3O 1_gen3P millis(); } } else { _gen3I _gen3O0;}
 if (
_gen3I) {  if ( _isTimer _gen3P 250 )) { _gen3P millis(); _gen3O = ! _gen3O;}}
digitalWrite(16_gen3O);
if ((((
3.00)*(_SCT_2))/(60)) > (32.6)) {
_dispTempLength1 = (String("Ураган")).length();
if (
_disp30oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp30oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Ураган"));
} else {
if (
_disp30oldLength 0) {_isNeedClearDisp1 1_disp30oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (28.4)) && ((((3.00)*(_SCT_2))/(60)) <= (32.6)) )) {
_dispTempLength1 = (String("Буря")).length();
if (
_disp29oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp29oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Буря"));
} else {
if (
_disp29oldLength 0) {_isNeedClearDisp1 1_disp29oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (24.4)) && ((((3.00)*(_SCT_2))/(60)) <= (28.4)) )) {
_dispTempLength1 = (String("Шквал")).length();
if (
_disp28oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp28oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Шквал"));
} else {
if (
_disp28oldLength 0) {_isNeedClearDisp1 1_disp28oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (20.7)) && ((((3.00)*(_SCT_2))/(60)) <= (24.4)) )) {
_dispTempLength1 = (String("Шторм")).length();
if (
_disp27oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp27oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Шторм"));
} else {
if (
_disp27oldLength 0) {_isNeedClearDisp1 1_disp27oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (17.1)) && ((((3.00)*(_SCT_2))/(60)) <= (20.7)) )) {
_dispTempLength1 = (String("Сердитый")).length();
if (
_disp25oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp25oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Сердитый"));
} else {
if (
_disp25oldLength 0) {_isNeedClearDisp1 1_disp25oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (13.8)) && ((((3.00)*(_SCT_2))/(60)) <= (17.1)) )) {
_dispTempLength1 = (String("Крепкий")).length();
if (
_disp24oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp24oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Крепкий"));
} else {
if (
_disp24oldLength 0) {_isNeedClearDisp1 1_disp24oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (10.7)) && ((((3.00)*(_SCT_2))/(60)) <= (13.8)) )) {
_dispTempLength1 = (String("Сильный")).length();
if (
_disp22oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp22oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Сильный"));
} else {
if (
_disp22oldLength 0) {_isNeedClearDisp1 1_disp22oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (7.9)) && ((((3.00)*(_SCT_2))/(60)) <= (10.7)) )) {
_dispTempLength1 = (String("Свежий")).length();
if (
_disp21oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp21oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Свежий"));
} else {
if (
_disp21oldLength 0) {_isNeedClearDisp1 1_disp21oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (5.4)) && ((((3.00)*(_SCT_2))/(60)) <= (7.9)) )) {
_dispTempLength1 = (String("Умеренный")).length();
if (
_disp20oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp20oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Умеренный"));
} else {
if (
_disp20oldLength 0) {_isNeedClearDisp1 1_disp20oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (3.3)) && ((((3.00)*(_SCT_2))/(60)) <= (5.4)) )) {
_dispTempLength1 = (String("Слабый")).length();
if (
_disp19oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp19oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Слабый"));
} else {
if (
_disp19oldLength 0) {_isNeedClearDisp1 1_disp19oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (1.5)) && ((((3.00)*(_SCT_2))/(60)) <= (3.3)) )) {
_dispTempLength1 = (String("Лёгкий")).length();
if (
_disp18oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp18oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Лёгкий"));
} else {
if (
_disp18oldLength 0) {_isNeedClearDisp1 1_disp18oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (0.2)) && ((((3.00)*(_SCT_2))/(60)) <= (1.5)) )) {
_dispTempLength1 = (String("Тихий")).length();
if (
_disp14oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp14oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Тихий"));
} else {
if (
_disp14oldLength 0) {_isNeedClearDisp1 1_disp14oldLength 0;} 
}
if ((((
3.00)*(_SCT_2))/(60)) <= (0.2)) {
_dispTempLength1 = (String("Штиль")).length();
if (
_disp13oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp13oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Штиль"));
} else {
if (
_disp13oldLength 0) {_isNeedClearDisp1 1_disp13oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = ((( _floatToStringWitRaz(((3.00)*(_SCT_2))/(60),0)))).length();
if (
_disp31oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp31oldLength _dispTempLength1;
disp.setCursor(23);
disp.print((( _floatToStringWitRaz(((3.00)*(_SCT_2))/(60),0))));
} else {
if (
_disp31oldLength 0) {_isNeedClearDisp1 1_disp31oldLength 0;} 
}




}
String  _floatToStringWitRaz(float valueint raz)
{
 
  return 
String(value,raz);
}
bool _isTimer(unsigned long startTimeunsigned long period )
  {
  
unsigned long currentTime;
currentTime millis();
if (
currentTime>= startTime) {return (currentTime>=(startTime period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
 
void  _SCT_2coutFunction()
_SCT_2IC++;
}

Прикреплённый файл:


zip Meteostanciya_flp.zip Размер: 35.67 KB; Просмотры: 391
zip DHT_NEW.zip Размер: 42.73 KB; Просмотры: 524
zip LiquidCrystalRus.zip Размер: 9.22 KB; Просмотры: 346
zip Meteostanciya_v1_0_ino.zip Размер: 2.49 KB; Просмотры: 356



Re: Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2537
Не в сети
Добавлен трёхцветный светодиод с ограничивающим ток резистором в 1 кОм. Теперь, если:
жарко он мигает красным светом,
тепло - горит красный,
комфортно - горит зелёный,
прохладно - горит синий,
холодно - мигает синим светом.
Также ограничена по времени продолжительность тревожного сигнала, до 15 секунд. Дополнительно при сильном ветре от 10,7 м/с и выше, начнёт мигать красный светодиод встроенный на самой плате Arduino Uno. Обновлённый проект для программы FLProg предоставлен в архиве к сообщению.
Открыть изображение в новом окне

#include <LiquidCrystalRus.h>
#include "DHT_NEW.h"
DHT _dht1;

LiquidCrystalRus disp(6791045);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;

int _disp23oldLength 0;
int _disp6oldLength 0;
int _disp8oldLength 0;
int _disp15oldLength 0;
unsigned long _SCT_2 0UL;
unsigned long _SCT_2IC 0UL;
unsigned long _SCT_2P 0UL;
int _disp18oldLength 0;
int _disp21oldLength 0;
unsigned long _dht1LRT 0UL;
unsigned long _dht1Tti 0UL;
int _disp30oldLength 0;
int _disp20oldLength 0;
int _disp24oldLength 0;
int _BytesToWord_3_Out 0;
bool _gen5I 0;
bool _gen5O 0;
unsigned long _gen5P 0UL;
bool _gen4I 0;
bool _gen4O 0;
unsigned long _gen4P 0UL;
int _disp22oldLength 0;
int _disp2oldLength 0;
int _disp27oldLength 0;
int _disp5oldLength 0;
int _disp10oldLength 0;
int _disp25oldLength 0;
int _disp3oldLength 0;
int _disp1oldLength 0;
int _disp29oldLength 0;
int _disp32oldLength 0;
int _BytesToWord_1_Out 0;
bool _gen2I 0;
bool _gen2O 0;
unsigned long _gen2P 0UL;
int _disp28oldLength 0;
int _disp4oldLength 0;
int _disp7oldLength 0;
int _disp9oldLength 0;
int _disp12oldLength 0;
int _disp17oldLength 0;
bool _gen1I 0;
bool _gen1O 0;
unsigned long _gen1P 0UL;
int _disp11oldLength 0;
int _disp14oldLength 0;
int _disp26oldLength 0;
int _disp31oldLength 0;
bool _gen3I 0;
bool _gen3O 0;
unsigned long _gen3P 0UL;
int _disp13oldLength 0;
int _disp19oldLength 0;
void setup()
{
pinMode(16OUTPUT); 
pinMode(11OUTPUT); 
pinMode(12OUTPUT); 
pinMode(19OUTPUT); 
pinMode(13OUTPUT); 

disp.begin(204);
pinMode(2INPUT);
_SCT_2P=micros();
attachInterruptdigitalPinToInterrupt (2), _SCT_2coutFunctionFALLING);
_dht1.setup(8);
_dht1LRT millis();
_dht1Tti millis(); 
}
void loop()
{if (
_isNeedClearDisp1) {disp.clear(); _isNeedClearDisp10;}





//Плата:1
//Наименование:Метеостанция
//Комментарии:http://radio-hobby.org
if (!(0)) {
_dispTempLength1 = (String("Метеостанция v1.01")).length();
if (
_disp2oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp2oldLength _dispTempLength1;
disp.setCursor(00);
disp.print(String("Метеостанция v1.01"));
} else {
if (
_disp2oldLength 0) {_isNeedClearDisp1 1_disp2oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("C")).length();
if (
_disp26oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp26oldLength _dispTempLength1;
disp.setCursor(41);
disp.print(String("C"));
} else {
if (
_disp26oldLength 0) {_isNeedClearDisp1 1_disp26oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("t:")).length();
if (
_disp1oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp1oldLength _dispTempLength1;
disp.setCursor(01);
disp.print(String("t:"));
} else {
if (
_disp1oldLength 0) {_isNeedClearDisp1 1_disp1oldLength 0;} 
}
if(
_isTimer(_dht1Tti1000)) {
if(
_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
_dht1.readSensor();
_dht1LRT millis(); 
_dht1Tti millis(); 
}
}
if (!(
0)) {
_dispTempLength1 = ((( _floatToStringWitRaz(_dht1.humidity,0)))).length();
if (
_disp17oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp17oldLength _dispTempLength1;
disp.setCursor(22);
disp.print((( _floatToStringWitRaz(_dht1.humidity,0))));
} else {
if (
_disp17oldLength 0) {_isNeedClearDisp1 1_disp17oldLength 0;} 
}
_BytesToWord_3_Out word(0_dht1.humidity);
if ((
_BytesToWord_3_Out) >= (70)) {
_dispTempLength1 = (String("Влажно")).length();
if (
_disp7oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp7oldLength _dispTempLength1;
disp.setCursor(62);
disp.print(String("Влажно"));
} else {
if (
_disp7oldLength 0) {_isNeedClearDisp1 1_disp7oldLength 0;} 
}
if (( ((
_BytesToWord_3_Out) >= (40)) && ((_BytesToWord_3_Out) < (70)) )) {
_dispTempLength1 = (String("Норма")).length();
if (
_disp6oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp6oldLength _dispTempLength1;
disp.setCursor(62);
disp.print(String("Норма"));
} else {
if (
_disp6oldLength 0) {_isNeedClearDisp1 1_disp6oldLength 0;} 
}
if ((
_BytesToWord_3_Out) < (40)) {
_dispTempLength1 = (String("Сухо")).length();
if (
_disp5oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp5oldLength _dispTempLength1;
disp.setCursor(62);
disp.print(String("Сухо"));
} else {
if (
_disp5oldLength 0) {_isNeedClearDisp1 1_disp5oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = ((( _floatToStringWitRaz(_dht1.temperature,0)))).length();
if (
_disp3oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp3oldLength _dispTempLength1;
disp.setCursor(21);
disp.print((( _floatToStringWitRaz(_dht1.temperature,0))));
} else {
if (
_disp3oldLength 0) {_isNeedClearDisp1 1_disp3oldLength 0;} 
}
_BytesToWord_1_Out word(0_dht1.temperature);
digitalWrite(19, ( ((_BytesToWord_1_Out) >= (20)) && ((_BytesToWord_1_Out) < (25)) ));
if (( ((
_BytesToWord_1_Out) >= (20)) && ((_BytesToWord_1_Out) < (25)) )) {
_dispTempLength1 = (String("Тепло")).length();
if (
_disp12oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp12oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Тепло"));
} else {
if (
_disp12oldLength 0) {_isNeedClearDisp1 1_disp12oldLength 0;} 
}
digitalWrite(12, ( ((_BytesToWord_1_Out) >= (15)) && ((_BytesToWord_1_Out) < (20)) ));
if (( ((
_BytesToWord_1_Out) >= (15)) && ((_BytesToWord_1_Out) < (20)) )) {
_dispTempLength1 = (String("Комфортно")).length();
if (
_disp11oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp11oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Комфортно"));
} else {
if (
_disp11oldLength 0) {_isNeedClearDisp1 1_disp11oldLength 0;} 
}
if ((
_BytesToWord_1_Out) >= (25)) {
_dispTempLength1 = (String("Жарко")).length();
if (
_disp10oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp10oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Жарко"));
} else {
if (
_disp10oldLength 0) {_isNeedClearDisp1 1_disp10oldLength 0;} 
}
if ((
_BytesToWord_1_Out) >= (25)) { if (! _gen2I) { _gen2I 1_gen2O 1_gen2P millis(); } } else { _gen2I _gen2O0;}
 if (
_gen2I) {  if ( _isTimer _gen2P 500 )) { _gen2P millis(); _gen2O = ! _gen2O;}}
digitalWrite(19_gen2O);
digitalWrite(11, ( ((_BytesToWord_1_Out) >= (10)) && ((_BytesToWord_1_Out) < (15)) ));
if (( ((
_BytesToWord_1_Out) >= (10)) && ((_BytesToWord_1_Out) < (15)) )) {
_dispTempLength1 = (String("Прохладно")).length();
if (
_disp9oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp9oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Прохладно"));
} else {
if (
_disp9oldLength 0) {_isNeedClearDisp1 1_disp9oldLength 0;} 
}
if ((
_BytesToWord_1_Out) < (10)) {
_dispTempLength1 = (String("Холодно")).length();
if (
_disp8oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp8oldLength _dispTempLength1;
disp.setCursor(61);
disp.print(String("Холодно"));
} else {
if (
_disp8oldLength 0) {_isNeedClearDisp1 1_disp8oldLength 0;} 
}
if ((
_BytesToWord_1_Out) < (10)) { if (! _gen1I) { _gen1I 1_gen1O 1_gen1P millis(); } } else { _gen1I _gen1O0;}
 if (
_gen1I) {  if ( _isTimer _gen1P 500 )) { _gen1P millis(); _gen1O = ! _gen1O;}}
digitalWrite(11_gen1O);
if (!(
0)) {
_dispTempLength1 = (String("%")).length();
if (
_disp23oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp23oldLength _dispTempLength1;
disp.setCursor(42);
disp.print(String("%"));
} else {
if (
_disp23oldLength 0) {_isNeedClearDisp1 1_disp23oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("h:")).length();
if (
_disp4oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp4oldLength _dispTempLength1;
disp.setCursor(02);
disp.print(String("h:"));
} else {
if (
_disp4oldLength 0) {_isNeedClearDisp1 1_disp4oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("м/с")).length();
if (
_disp15oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp15oldLength _dispTempLength1;
disp.setCursor(43);
disp.print(String("м/с"));
} else {
if (
_disp15oldLength 0) {_isNeedClearDisp1 1_disp15oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = (String("v:")).length();
if (
_disp32oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp32oldLength _dispTempLength1;
disp.setCursor(03);
disp.print(String("v:"));
} else {
if (
_disp32oldLength 0) {_isNeedClearDisp1 1_disp32oldLength 0;} 
}
if((( 
micros()-_SCT_2P) >60000000)||(( micros()-_SCT_2P) <0)){_SCT_2 _SCT_2IC;_SCT_2IC=0;_SCT_2P micros();}
if ((((
3.00)*(_SCT_2))/(60)) > (10.7)) { if (! _gen5I) { _gen5I 1_gen5O 1_gen5P millis(); } } else { _gen5I _gen5O0;}
 if (
_gen5I) {  if ( _isTimer _gen5P 250 )) { _gen5P millis(); _gen5O = ! _gen5O;}}
digitalWrite(13_gen5O);
if ((((
3.00)*(_SCT_2))/(60)) > (24.00)) {if (! _gen4I){_gen4I 1_gen4O 1_gen4P millis();}} else { _gen4I _gen4O0; } if (_gen4I &&  _gen4O)   _gen4O = !( _isTimer_gen4P 15000 ));
if (
_gen4O) { if (! _gen3I) { _gen3I 1_gen3O 1_gen3P millis(); } } else { _gen3I _gen3O0;}
 if (
_gen3I) {  if ( _isTimer _gen3P 250 )) { _gen3P millis(); _gen3O = ! _gen3O;}}
digitalWrite(16_gen3O);
if ((((
3.00)*(_SCT_2))/(60)) > (32.6)) {
_dispTempLength1 = (String("Ураган")).length();
if (
_disp30oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp30oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Ураган"));
} else {
if (
_disp30oldLength 0) {_isNeedClearDisp1 1_disp30oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (28.4)) && ((((3.00)*(_SCT_2))/(60)) <= (32.6)) )) {
_dispTempLength1 = (String("Буря")).length();
if (
_disp29oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp29oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Буря"));
} else {
if (
_disp29oldLength 0) {_isNeedClearDisp1 1_disp29oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (24.4)) && ((((3.00)*(_SCT_2))/(60)) <= (28.4)) )) {
_dispTempLength1 = (String("Шквал")).length();
if (
_disp28oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp28oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Шквал"));
} else {
if (
_disp28oldLength 0) {_isNeedClearDisp1 1_disp28oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (20.7)) && ((((3.00)*(_SCT_2))/(60)) <= (24.4)) )) {
_dispTempLength1 = (String("Шторм")).length();
if (
_disp27oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp27oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Шторм"));
} else {
if (
_disp27oldLength 0) {_isNeedClearDisp1 1_disp27oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (17.1)) && ((((3.00)*(_SCT_2))/(60)) <= (20.7)) )) {
_dispTempLength1 = (String("Сердитый")).length();
if (
_disp25oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp25oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Сердитый"));
} else {
if (
_disp25oldLength 0) {_isNeedClearDisp1 1_disp25oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (13.8)) && ((((3.00)*(_SCT_2))/(60)) <= (17.1)) )) {
_dispTempLength1 = (String("Крепкий")).length();
if (
_disp24oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp24oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Крепкий"));
} else {
if (
_disp24oldLength 0) {_isNeedClearDisp1 1_disp24oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (10.7)) && ((((3.00)*(_SCT_2))/(60)) <= (13.8)) )) {
_dispTempLength1 = (String("Сильный")).length();
if (
_disp22oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp22oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Сильный"));
} else {
if (
_disp22oldLength 0) {_isNeedClearDisp1 1_disp22oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (7.9)) && ((((3.00)*(_SCT_2))/(60)) <= (10.7)) )) {
_dispTempLength1 = (String("Свежий")).length();
if (
_disp21oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp21oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Свежий"));
} else {
if (
_disp21oldLength 0) {_isNeedClearDisp1 1_disp21oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (5.4)) && ((((3.00)*(_SCT_2))/(60)) <= (7.9)) )) {
_dispTempLength1 = (String("Умеренный")).length();
if (
_disp20oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp20oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Умеренный"));
} else {
if (
_disp20oldLength 0) {_isNeedClearDisp1 1_disp20oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (3.3)) && ((((3.00)*(_SCT_2))/(60)) <= (5.4)) )) {
_dispTempLength1 = (String("Слабый")).length();
if (
_disp19oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp19oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Слабый"));
} else {
if (
_disp19oldLength 0) {_isNeedClearDisp1 1_disp19oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (1.5)) && ((((3.00)*(_SCT_2))/(60)) <= (3.3)) )) {
_dispTempLength1 = (String("Лёгкий")).length();
if (
_disp18oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp18oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Лёгкий"));
} else {
if (
_disp18oldLength 0) {_isNeedClearDisp1 1_disp18oldLength 0;} 
}
if (( ((((
3.00)*(_SCT_2))/(60)) > (0.2)) && ((((3.00)*(_SCT_2))/(60)) <= (1.5)) )) {
_dispTempLength1 = (String("Тихий")).length();
if (
_disp14oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp14oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Тихий"));
} else {
if (
_disp14oldLength 0) {_isNeedClearDisp1 1_disp14oldLength 0;} 
}
if ((((
3.00)*(_SCT_2))/(60)) <= (0.2)) {
_dispTempLength1 = (String("Штиль")).length();
if (
_disp13oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp13oldLength _dispTempLength1;
disp.setCursor(83);
disp.print(String("Штиль"));
} else {
if (
_disp13oldLength 0) {_isNeedClearDisp1 1_disp13oldLength 0;} 
}
if (!(
0)) {
_dispTempLength1 = ((( _floatToStringWitRaz(((3.00)*(_SCT_2))/(60),0)))).length();
if (
_disp31oldLength _dispTempLength1) {_isNeedClearDisp1 1;} 
_disp31oldLength _dispTempLength1;
disp.setCursor(23);
disp.print((( _floatToStringWitRaz(((3.00)*(_SCT_2))/(60),0))));
} else {
if (
_disp31oldLength 0) {_isNeedClearDisp1 1_disp31oldLength 0;} 
}




}
String  _floatToStringWitRaz(float valueint raz)
{
 
  return 
String(value,raz);
}
bool _isTimer(unsigned long startTimeunsigned long period )
  {
  
unsigned long currentTime;
currentTime millis();
if (
currentTime>= startTime) {return (currentTime>=(startTime period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
 
void  _SCT_2coutFunction()
_SCT_2IC++;
}

Прикреплённый файл:


zip Meteostanciya_flp_v1.01.zip Размер: 40.23 KB; Просмотры: 309



Re: Домашняя метеостанция
Главный Инженер
Зарегистрирован:
07.12.2009 19:01
Из: г. Запердолинск
Сообщений: 1702
Не в сети
вот если бы эта станция не константировала данные погоды а задавала погоду , то цены бы ей не было .



Re: Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2537
Не в сети
)))... Для это дела нужно другое: самолёт, полный бак и мешки с цементом.



Re: Домашняя метеостанция
Главный Технолог
Зарегистрирован:
14.04.2009 7:05
Из: Россия
Сообщений: 271
Не в сети
Цитата:

Kosmonavt пишет:
)))... Для это дела нужно другое: самолёт, полный бак и мешки с цементом.

Мне кажется этого будет мало, нужен как минимум специалист из Хогвартса!



Re: Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2537
Не в сети
Нужна помощь?
Открыть изображение в новом окне



Re: Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2537
Не в сети
Теперь, зная три значения показателей погоды, какую можно придумать формулу, чтобы вычисляла температуру по ощущению? Есть идеи? Есть, правда, онлай-калькулятор, формула там несложная и ввести нужно всего эти три переменные. Но, например, не сказано сколько составляет Q - излучение, поглощаемое единицей площади поверхности (W/m2)? Откуда её брать?

Прикреплённый файл:



jpg  Метеостанция v1.01.jpg (237.22 KB)
290_5edc12a35a0ee.jpg 596X800 px


Отредактировано пользователем Kosmonavt 07.06.2020 1:31:38
Отредактировано пользователем Kosmonavt 07.06.2020 1:35:07
Отредактировано пользователем Kosmonavt 07.06.2020 1:36:27


Re: Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2537
Не в сети
Нашлось время и метеостанция обрела готовый корпус.
Открыть изображение в новом окне



Поиск по форуму


Расширенный поиск

Разное

Интересно

При пайке деталей над горловиной кинескопа накройте ее куском материи.
Этим Вы убережёте кинескоп от случайно падающего расплавленного припоя и, следовательно, от трещин в его стекле.