Очередной МЕТЕО. Но рабочий

rw3ar
Offline
Зарегистрирован: 15.05.2017

Коллеги, рискну поделиться рабочим проектом самодельной простенькой метеостанции.

Работает на Arduino Mega

Измеряет:

- три температуры

- атмосферное давление

- влажность воздуха

Пишет всё это на SD.

Время корректирует по GPS (если ловит, что не всегда).

На дисплее 4х20 отображает:

- три температуры,

- давление

- влажность

- текущее время

- последнее время по GPS.

На запрос по СМС вида:

- *t отсылает строку метеоданных

- "money" - отсылает текущий баланс (запросив его у провайдера).

Система более-менее (не без погрешностей со временем) работает примерно года 3 в деревенском доме. Чаще всего в полностью автономном режиме.

 

rw3ar
Offline
Зарегистрирован: 15.05.2017

Скетч далёк от идеала (особенно в части времени), но повторюсь - система работает, и меня в целом устраивает.

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

как ты думаешь, нахрена людям в готовом коде закомментированные куски?  Типа этого

175  // void powerUpOrDown()  //***** включение модуля SIM900 (pin9 модуля соединён с pin9 Меги) *****************
176 //{
177 // pinMode(9, OUTPUT);
178 // digitalWrite(9,LOW);
179 // delay(1000);
180 // digitalWrite(9,HIGH);
181 // delay(2000);
182 // digitalWrite(9,LOW);
183 // delay(5000);
184 //}
 

Если ты код не поленишься почистить, текст станет меньше

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

loop() длиной в 340 строчек, я щитаю, просто шикарен, никто так не умеет.  Для сравнения, я счас Радио делаю на Атмега8, вот мой loop().  Весь. Больше туда ничего вставляться не будет. 

1void loop()
2{
3    TuningPot.Read();   // почитать потенциометр настройки
4    Timers.Run();       // тикнуть таймерами
5    Radio.ReadStatus(); // прочитать статус Радиомодуля
6    btnLight.Read();    // Прочитать кнопку включения подсветки
7 
8    if (MessageList) Dispatch(MessageList.GetMessage()); // если ктонить из них прислал сапщение - обработать его
9}

 

rw3ar
Offline
Зарегистрирован: 15.05.2017

Да, конечно. Можно почистить. И delay'ем я с тех пор научился не пользоваться...

Да, текст станет компактнее. Код красивее. Безусловно.

Но... я ведь не хвастаться сюда пришёл, и красоваться дыртаньяном... Я просто делюсь рабочим кодом. Древним, лохматым... Рабочим, пусть и не красивым. Мне, к примеру, очень много пользы приносят чужие именно "кривые" коды... Может, и мой кому сгодится. Выдернет что-то полезное, и сделает лучше.

А за совет - спасибо.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нууу, какбэ это щитается хорошим тоном, ничего лишнего. 

rw3ar
Offline
Зарегистрирован: 15.05.2017

Нуу, какбэ да. Считается. У программистов. Оные готовы за лишнюю строку тухлыми тапками закидать насмерть. И я их даже где-то понимаю, да. Когда заказчику с тугим кошельком... или там прохфессору в курсовой... тем более - в дипломе. Или друг перед дружкой повыёживаться. Это так, достойно вполне.

Но тут, всё-таки, несколько иная ситуё... ситуа... ладно, проехали. Тут форум, где такое обилие тем (чаще пустых) про метео и охрану безумных домов, что мне показалось - будет полезно для кого-то посмотреть древний, кривой, лохматый (в смысле строк и комментов), но вот уже несколько лет работающий самописный код. Не, как в учебнике. Ну просто ради разнообразия. На фоне Гуров (с Большой Буквы) с одной стороны, и "поможите кто чем может"(с) с другой.

))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

rw3ar пишет:
будет полезно для кого-то посмотреть древний, кривой, лохматый (в смысле строк и комментов), но вот уже несколько лет работающий самописный код. Не, как в учебнике. Ну просто ради разнообразия. На фоне Гуров (с Большой Буквы) с одной стороны, и "поможите кто чем может"(с) с другой.

Ну это из серии, а давайте я вас говном накормлю, для разнообразия, невкусно, канеш, дак зато бесплатно, даже, мошт, и полезно кому будет. 

rw3ar
Offline
Зарегистрирован: 15.05.2017

А по существу мысли есть?

А то, боюсь, про рюшечки-плюшечки мало кому интересно. Конкретно - что в этом супе не так? Что мусор в листинге - это понятно, но "на скоростные качества влияния не оказывает"(с) - работать будет одинаково, что с мусором, что без. Вот со временем я где-то  накосячил, работает кривовато. То есть пока GPS ловится нормально, то всё хорошо, а вот если нет, и если сигнал GPS поймался как-то не так - может совершенно фантастические циферки выдать.

Ну и календарь я поленился писать, в итоге дата в интервале от 00:00 до 03:00 не правильная. А как обойтись без самописного календаря - знаний не хватает.

Не то, чтобы я просил себе какой-то помощи в этом вопросе (меня-то несколько лет всё в этой штуке более-менее устраивает), но вообще было бы полезно. Во всяком случае, гораздо полезнее вылизывания листинга ради фэншуя.

Что же до дерьма, так ведь никто силой не кормит - "не нравится, не ешь"(с)

За критику спасибо.