Полный текст

​Графическое программирование конечных автоматов для ArduinoКак только сложность программы выходит за пределы «Hello Word!», у начинающих ардуинщиков появляются проблемы. Самая тяжелая из них — удержать в голове структуру программного кода. Нельзя сказать, что у опытных программистов встраиваемых систем этой проблемы нет. Достаточно попытаться реанимировать собственный проект двухлетней давности, если он недостаточно документирован, то включиться в работу будет очень трудно.Решение существует — представление в графическом виде. При этом программа разбивается на секции кода, которые имеют одну точку входа и одну точку выхода. Эти секции образуют состояния или иначе вершины, по терминологии теории графов. Вершины соединяются между собой условными переходами, также содержащими программный код. Получается наглядно и очень надёжно.Всё это хорошо, но новичку просто лениво. Зачем что-то рисовать, если того же результата можно добиться несколькими строчками кода? Ответ: макрокоманды. Такие, например, как WAIT(Time,Counter), она позволяет с лёгкостью организовать временную задержку. И это будет вовсе не Delay(Time) от Arduino, которая остановит выполнение всего остального пользовательского кода. Нет. По предоставляемым возможностям ближайшей аналогией будет RTOS — операционная система реального времени. Если один автомат замер в ожидании отсчёта времени, то остальные автоматы проекта будут продолжать работать.Рассмотрим практическое использование графических конечных автоматов под Arduino на примере часов-метеостанции