Заход и восход солнца средствами rtc gprs shield v3, оптимизация кода в arduino

Тема в разделе "Флудилка", создана пользователем Андрей Новичок, 26 янв 2020.

Метки:
  1. b707

    b707 Гуру

    если число - порядковый номер "десятка минут в сутках", то в последней строчке вы где-то обсчитались. Как уже писал выше, в сутках только 24 *6 = 144 десятка минут, а не 238
    Хотя может я не понял Вашей идеи, тогда извиняюсь.
     
    ИгорьК нравится это.
  2. b707

    b707 Гуру

    Даниил, спасибо, Вы мне подсказали еще один вариант
    Можно еще кодировать поразрядно в десятичных числах, первые два разряда - час, последний десятичный разряд - десятки минут:
    00.20 => 002
    08.50 => 085
    ...
    23.50 => 235

    Для начинающих, думаю, этот самый простой и наглядный.
    :
     
    Последнее редактирование: 26 янв 2020
    SergeiL, ИгорьК и Daniil нравится это.
  3. Daniil

    Daniil Гуру

    я начинаю лажать, у меня в часе 10 десятков было(
    В общем, раздолье для фантизии. Я подобным образом храню полную дату (десятки и единицы лет/месяц/день месяца/день недели/часы/минуты) в uint32.
     
    b707 нравится это.
  4. Ни разу не программист, иначе не было бы вопросов :).

    Ой-ой-ой сколько написали :). Прямо задавили знаниями:) Всё пойдет в прок!
    DetSimen - учту, буду думать про целые, придётся пошевелить мозгами. А можно пример? Ну, скажем, такой, обезличенный к текущей задаче?
    Да, хватит. Это если только одна формула sin, cos, tn, сtg и пр. А если перемножать и делить их друг на друга, то фига хватит :(. Вы видели формулу вычисления восхода по местоположению? Там 7 функций и аргументов 4.
    b707 - про табличку не думаю, но стоит проверить в принципе как это; тригонометрия в таблице - перебор уж совсем, не для тех задач уж точно, скорее восходы/заходы, я и так извращался как только можно, больше не хочется. Тригонометрия это для каких-то других задач, мне кажется. Там, для двигателя какого-то или т.п. Но посыл я принял!
    Слишком Вы шустрый. Не выйдет. Как пользоваться числом не подумали? Как использовать в вычислениях? Кому нужно такое хранение, когда вычисления в типе float? Ключевой вопрос не в хранении, а в оптимизации вычисления. Если для этого нужно хранение, то Ок. А вычисления все равно какими были, такими и останутся. Таблица с данными здесь, как решение, хоть мне и не нравится, более адекватное.
    Daniil - я за Вами не поспеваю просто:)
    В общем, товарищи,
    Спасибо за посты. Есть о чём подумать. Но всё же, не увидел вариантов перевода float, ну, скажем, в byte. Ну или принципа такого перевода. Это не проект Ардуино, это дискретная математика.
    Всем спокойной ночи, а то уже перебор.
     
  5. b707

    b707 Гуру

    В каких вычислениях? Вы хотели, если я правильно помню - включать и выключать освещение по времени заката и восхода. Вот я и предлагаю сохранить готовое время восхода и заката в крохотную табличку в виде одного байта. Все, никакие вычисления больше не понадобятся. Берете из таблицы время восхода на сегоднящний день , например 8:40 - и включаете свет.

    Андрей, я конечно понимаю, что вам слегка обидно, вы хотели найти способо бороться с огромными формулами. Только правда в том, что бороться ни с чем не нужно, все эти формулы для вашей задачи не нужны вовсе. Будьте проще, ищите более короткий путь к решению, а не занимайтесь "оптимизацией" ради самой оптимизации.
     
    DetSimen нравится это.
  6. b707

    b707 Гуру

    Умейте смотреть шире, самый эффективный способ оптимизации float от ардуино - отказ от него совсем.
     
    DetSimen нравится это.
  7. ИгорьК

    ИгорьК Гуру


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

    Если свет все же включать необходимо, то, кроме странного запрета на интернет, в дело вступают совсем другие факторы, нежели время восхода/захода, а именно:

    1. Состояние погоды/рельеф местности/растителтность. (Комфортное включение возможно лишь с учётом освещённости, что хорошо делают китайские сумеречные выключатели, кои продаются в каждом магазине, и ардуино здесь вообще не нужна).

    Если мы говорим об удобстве и экономии, то придется тратить ресурсы на следующие вещи:

    2. Наличие жителей - нужно ли в принципе "сегодня" включать свет.

    3. Мои куры обожрались деньгами, или все таки в три часа ночи этот свет надо выключить в целях экономии.

    4. Сколько имеется точек включения уличного света (у меня - три: с двух сторон на стенах домика и отдельный уличный фонарь).

    5. Есть ли техническая возможность в "этой" точке управления освещением иметь сведения о состоянии текущей уличной освещенности. (У меня уличный фонарь изначально включается в таком месте, что без существенных затрат или "колхоза" в точке включения узнать освещённость не возможно.

    6. "Сегодня" в три часа ночи меня все таки понесло переместить свое тело по тёмному участку из точки А в точку Б (в частности, я открыл уличную дверь в это время, и это тоже учитывается в управлении светом).

    Комбинация этих факторов выводит управление освещением далеко за пределы решения задачи о движении солнца вокруг земли.

    ...

    RTC, GPRS Shield(!!!!!), Arduino - и все для включения света? Точно есть?
     
    Последнее редактирование: 26 янв 2020
    SergeiL и DetSimen нравится это.
  8. Asper Daffy

    Asper Daffy Иксперд

    Ну, то что сделал - молодец, но зачем? В качестве упражнения? Или штатные средства стандартной библиотеки языка Си чем-то не устраивают?
     
  9. b707

    b707 Гуру

    Закат Солнца вручную...
     
  10. Asper Daffy

    Asper Daffy Иксперд

    Ну, губу закатать вручную - ещё ладно, а Солнце-то за что?
     
  11. SergeiL

    SergeiL Оракул Модератор

    Так тут похоже вопрос не в результате.
     
  12. Здравствуйте, товарищи!
    В общем, всё внимательно прочитал.
    Я столько литературы технической не читал за истёкший день, сколько за месяц.

    Похоже придётся принять концепцию хранения табличных данных в EEPROM. Но здесь есть ограничения.
    Ниже достаточно фиктивные графики, т.к. для порядка их нужно было не только перемещать по диагонали, но ещё и растягивать по горизонтали. Правда, для понимания идеи и так сойдёт.
    Москва.png Экватор.png Автралия.png

    Это означает, что сокращение периодических функций (погрешности движения Земли и високосные года игнорируем) не возможно, точнее возможно, но не эффективно. Придётся весь типовой год записывать в EEPROM.

    При использовании EEPROM для хранения данных имеем ограничения, связанные с местоположением объекта. Задачу в общем виде теоретически можно решить и имеющимися средствами, но это уже будет профессиональный проект, а не любительский.
    Для любительского проекта нужно определить конкретный объект с его местоположением и зафиксировать данные. Вот это есть и ограничение при работе с фиксированными таблицами.

    В любом случае, всем спасибо!
     
  13. b707

    b707 Гуру

    Не надо в ЕЕПРОМ ... лучше в PROGMEM
     
  14. Asper Daffy

    Asper Daffy Иксперд

    А на мой вопрос из #28 ответишь? Чем не устраивает готовое решение, которое уже есть в системе? Зачем своё-то лепить?
     
  15. SergeiL

    SergeiL Оракул Модератор

    Но у Вас же объект не перемещается. :)
    Так не знает ТС про все функции из time.h
     
  16. Asper Daffy

    Asper Daffy Иксперд

    Это-то нормально, но он же и вопросов не задаёт, а там есть и восход, и закат, и склонение Солнца и даже фазы Луны.
     
  17. SergeiL, логично: вряд ли GPRS Shield v3 в его конструктивном исполнении можно перемещать на тракторе по пересечённой местности :). Так и есть.
    Asper Daffy, Вы меня прямо обнадёжили по началу... Но увы, Time.h это просто календарь с типовыми функциями + примеры синхронизации для разных вариантов подключения.
     

    Вложения:

    • Time-1.6.0.zip
      Размер файла:
      32,4 КБ
      Просмотров:
      196
  18. Airbus

    Airbus Радиохулиган Модератор

    А поговорить?
     
    SergeiL нравится это.
  19. ИгорьК, не стал копировать весь пост. Вы, конечно, правы по поводу отражения человеческого поведения на объекте. Но вы ставите уж больно крутые (для меня, во всяком случае) задачи. Таких задач нет. Точнее хотелось бы, но уж больно это затратно, в основном по времени реализации для моей персоны. Года полтора пройдёт, как разберусь и такое сделаю в железе.
    GPRS Shield v3 позволяет для некоторых операторов связи получать ДатуВремя. Я ищу способ использования: скажем, включать насос отопления по расписанию или команде. Или какие-то другие варианты использования реального времени. Вы же видите путь от точки А к точке Б. Это разумно. Я ищу ограничения моей необузданной фантазии, которые сделают разумными мои пожелания.
    Так что с этим Вы поторопились.
     
  20. asam

    asam Гик

    C моей точки зрения логично включать свет не по времени, а когда становится темно, а выключать - когда светло. То есть достаточно датчика освещенности.
     
    Asper Daffy и parovoZZ нравится это.