Форум

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

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

В сети

Пользователей: 196
Из них просматривают:
Аналоги: 75. Даташиты: 61. Инструкции: 3. Новости: 13. Остальное: 6. Партнёры: 1. Профиль пользователя: 7. Расчёты: 1. Теги: 1. Форум: 28.
Участников: 1
Гостей: 195

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

Партнёры


Партнёры

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

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

1 ... 61 62 63 64 65 66 67 ... 172


Re: Детектор темноты с задержкой включения оповещения
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Где их взять-то сейчас, МП42? Всё на цветмет пустили. Сегодня точно такой же поставил (в пачке ещё с десяток осталось). Засекаем время. )))



Re: Детектор темноты с задержкой включения оповещения
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Не рекомендую применять китайские фоторезисторы как на картинке. За три месяца эксплуатации в данной схеме его сопротивление сильно изменилось. У нового такого фоторезистора сопротивление 200 Ом - 1,2 МОм, а стало 700 Ом - 90 кОм и схема перестаёт работать.

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



jpg  0603200927-1.jpg (35.27 KB)
290_5ed74b39713ce.jpg 470X545 px



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



Re: кто чё делает
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Ну что, получилось исправить?



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



Re: Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Добавлен трёхцветный светодиод с ограничивающим ток резистором в 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; Просмотры: 265



Домашняя метеостанция
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Метеостанция умеет измерять и выводить на дисплей такие погодные параметры, как температуру в градусах, влажность в процентах и среднюю скорость ветра в метрах в секунду за период в одну минуту. Рядом с каждым параметром отображается словесное пояснение на русском языке. При штормовом ветре станция начнёт издавать прерывистый звуковой сигнал.
Схема собрана на плате 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; Просмотры: 353
zip DHT_NEW.zip Размер: 42.73 KB; Просмотры: 481
zip LiquidCrystalRus.zip Размер: 9.22 KB; Просмотры: 308
zip Meteostanciya_v1_0_ino.zip Размер: 2.49 KB; Просмотры: 317



Re: кто чё делает
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Сделал подсчёт скорости по принципу расстояния в метрах преодолеваемое ветром за период 60 секунд. Так как ветер дует с перерывами, то на выходе получаем среднее значение скорости ветра в секунду за период в 1 минуту. Плюс словесное определение силы ветра на каждом диапазоне скоростей по современной шкале Бофорта. И ещё с начала шторма начинает звучать предупредительный сигнал бузера.

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



jpg  200528_224117_COLLAGE-1.jpg (119.45 KB)
290_5ed017ff48b2f.jpg 652X754 px



Re: кто чё делает
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Спасибо за подсказку, evildesign, записал себе памятку, буду разбираться.



Re: кто чё делает
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2441
Не в сети
Добавил данные по скорости ветра. Не знаю как проще сделать. Чую нужно массивы использовать, а то простой математикой и логикой нагородить можно с три тома. А пока определение скорости получилось сделать так как на схеме ниже.
Счётчик имеет два входа: первый на сложение импульсов без ограничений, второй на вычитание с остановкой счёта до нуля. На первый вход подаются импульсы от датчика Холла, на второй с частотой 1Гц. На выходе счётчика получаем разность импульсов. Затем эту разность умножаем на коэффициент, который рассчитывается отдельно в зависимости от диаметра лопастей крыльчатки и количества импульсов от датчика Холла за один оборот. Полученный результат конвертируем в строку на ЖК-дисплей. Добавляем дополнительные надписи: единицы измерения и прочее.

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



jpg  Подсчёт скорости ветра.jpg (32.19 KB)
290_5ecf77c00a3cd.jpg 959X141 px

jpg  IMG_20200528_59978.jpg (34.91 KB)
290_5ecf77d4555fa.jpg 414X600 px




1 ... 61 62 63 64 65 66 67 ... 172




Разное

Интересно

Если "ревёт" один из дросселей резонансного стабилизатора, забейте деревянный клин между его катушками.