// Подключаем сервопривод к пину 9 через библиотеку Servo var servo = require("@amperka/servo").connect(P9); // Задаём максимальную скорость сервопривода // По часовой и против часовой стрелки var SPEED_MAX_CW = 544; var SPEED_MAX_CCW = 2400; var SPEED_STOP = (SPEED_MAX_CW + SPEED_MAX_CCW) / 2; // Переменная для хранения ID анимации var idAnimServo; // Создаём объект анимация // для плавного изменения параметров вращения мотора var animServo = require("@amperka/animation") .create({ // Начальное значение скорости from: SPEED_STOP, // Конечное значение скорости to: SPEED_MAX_CW, // Продолжительность полного перехода // за 3 секунды мотор пройдёт диапазон значений от 0 до 180 duration: 3, // Шаг обновления: каждые 20 мс updateInterval: 0.02, }) .queue({ // Начальное значение скорости from: SPEED_STOP, // Конечное значение скорости to: SPEED_MAX_CCW, // Продолжительность полного перехода // за 3 секунды мотор пройдёт диапазон значений от 180 до 0 duration: 3, }); // Запускаем анимацию idAnimServo = animServo.play(); // Обработчик анимации animServo.on("update", function (val) { servo.write(val,'us'); // Если анимация закончилась, // Запускаем её повторно if (idAnimServo._intervalID == null) { idAnimServo = animServo.play(); } });