
Комментарии 8
Спасибо. Интересный алгоритм. Но много тригонометрии, используются sin, cos, atan, acos, asin. Его написать на С тоже можно, но для микроконтроллера сложнее.
Что бы ещё оптимизировать расчет, нужно из GPS приемника получить данные о координатах, времени и о рассвете - закате. Вот только GPS в домах обычно не ставят, если только они не перемещаются.
А для сайта проще не считать, а запросить время рассвета на некоторых Интернет ресурсах.
Запросить время по API с другого сайта можно, но сейчас никто не гарантирует связность Интернета, да и мне, как новичку, интереснее самому подёргать веб-браузер. Насчёт микроконтроллера, я понимаю ограничения, поэтому и предложил LUT с формулами приведения (первое что пришло в голову, чтобы избежать прямого вычисления тригонометрии). Подозреваю, тут ещё много чего можно сделать для оптимизации.
Действительно сейчас Интернет нормально не работает. В устройстве страница с часами, которая запрашивает текущее время и выводит с помощью API время на страницу уже не работает. Кто то текущее время из Интернета зачем то блокирует.
Это устройство было изначально разработано для работы в локальной сети без подключения к Интернету.
Табличный метод действитеьно простой, но ёмкий и для пользователя ещё более сложный. С косинусом проще, тем более, что тригонометрия в микроконтроллере есть и в сценариях тоже выведена. Единственная сложность - в значениях с плавающей запятой.
Какое-то переусложнение на ровном месте. Освещённость спокойно аналитически вычисляется на основе положения Солнца в каждый момент времени. Есть даже готовые библиотеки
Положения Солнца в каждый момент времени, я так понимаю, определяется по солнечным часам, самому древнему и проверенному методу.
Библиотеки конечно есть и формула расчета у них примерно та же. Да и библиотеки сейчас не нужны, можно весь код написать с помощью Клода.
Здесь я лишь описал как я сам дошел до этого варианта расчета времени
Моделируем искусственный рассвет и закат