FLProg — школа для Arduino. Первые уроки общения и быстрого счета

imageВышла новая версия программы FLProg. Предыдущие посты о программе можно почитать здесь и здесь.В последнем посте я обещал, что в следующей версии будет встроен симулятор, и честно начал работать над ним. Но реальность меняет наши планы. Я развиваю проект в соответствии с пожеланиями пользователей программы, и как оказалось, симулятор пока мало кому интересен. В рейтинге голосования на сайте он оказался в самом низу. Поэтому я наступил на горло собственной песни и занялся более востребованным функционалом.Итак, что нового.Прежде всего, была проведена огромная работа по переделке рисования схемы. Действительно при размере схемы в 10 -15 плат отрисовка тормозила даже на мощных компьютерах. Пришлось полностью переписывать рисование в соответствии с новыми принципами.

Принцип 1 — кэшируем ВСЁ. Минимум расчетов в момент рисования. Это потянуло за собой создание переменных для кэша, поднятие дерева сообщений по цепочке объектов, и соответственно систему change-й с определением необходимости сброса тех или иных кэшей.Принцип 2 — рисуем только то, что видим. В общем, то тривиальная задача. Но на языке Smalltalk пришлось достаточно долго поковыряться для того что бы определить видимый прямоугольник в ScroolBox-е.Возможно, я изобрел велосипед, но это сработало. Проверка на нетбуке с Atom-ом показала, что скорость рисования никак не зависит от размера схемы.

Научил Arduino общаться между собой через Com порт.В программе появились новые блоки приема и передачи данных через Com порт. Постарался сделать это максимально просто и прозрачно. На схеме передающей платы ставится необходимое количество блоков передачи переменных, на принимающей стороне ставятся соответствующие им блоки приема переменной. Подробнее можно посмотреть на видео ниже

[embedded content]

Добавлен блок скоростного счетчика.Это стандартный блок практически во всех промышленных контроллерах. Но до сих пор я не решался к нему подступиться, поскольку не очень разбирался в аппаратных прерывания контроллера. Но пользователи хотели, и пришлось копаться. Вроде получилось. Блок считает импульсы на привязанном к нему цифровом входе контроллера за заданный промежуток времени. Счет происходит по прерыванию, соответственно не зависит от остальной программы. Описание работы со счетчиком и пример применения можно посмотреть на видео ниже

[embedded content]

Так же в соответствии с пожеланиями добавлено некоторое количество новых функциональных блоков. Блоки алгебры: Sin, Cos, Tan, Abs, Min, Max, Sq, Sqrt. Генератор случайных чисел, выделение переднего фронта. Общий обзор нововведений можно посмотреть на видео.

[embedded content]

Сайт программы flprog.ru

PS. Прошу не начинать как в прошлых постах холивар по поводу вредности языков FBD и LAD. Если Вы считаете их вселенским злом, просто закройте эту страницу. Есть люди, которые так не считают. Оставьте этот пост им.

© Habrahabr.ru