Эксперимент Пантограф на Arduino
Пакет поддержки Arduino: проект пантограф
Проведем известный в кругах любителей Arduino эксперимент - Пантограф. Соберем модель, которая будет управлять позицией вала сервопривода на основе позиции роторного энкодера.
Введение
После усвоения документации по пакету поддержки Arduino и использования базовых блоков интеграции, можно приступить к сборке эксперимента "Пантограф".
Для данной модели понадобится набор из роторного энкодера, сервопривода, макетной платы и STM32 Nucleo 64 F401RE.
Схема на макетке

Модель на Engee
Вся логика модели заключается в считывании позиции энкодера, конвертации этой позиции в градусы и передачи этого значения в сервопривод:
- Arduino-encoderRead - получает значение позиции энкодера
- ConvertToDegrees - конвертирует значение энкодера в значение из интервала от 0 до 180
- Arduino-servoWrite - задает положение вала сервопривода, на основе значения из блока ConvertToDegrees
amplitude = 36 # Амплитуда значений для энкодера
POS - Значение позиции вала энкодера
DEGREE - Значение градусов для задания в сервопривод

Позиция энкодера может принимать значение от -amplitude/2 до amplitude/2. В нашем случае это от -18 до 18, что нужно преобразовать в интервал от 0 до 180 - именно это и происходит внутри подсистемы ConvertToDegrees:
.png)
BIASED = POS + (amplitude/2) # В блоке Add
Смещаем интервал на половину периода amplitude.
MULTIPLIED = BIASED * 5 # В блоке DSP Product
Растягиваем получившийся интервал в 5 раз, получая новый, искомый от 0 до 180.
Заключение
На простом примере пантографа мы ознакомились с возможностями блоков Arduino-encoderRead и Arduino-servoWrite, что позволяет создать более сложные модели управления.