// подключаем библиотеку «motor» var Motor = require('@amperka/motor'); // подключаем первый мотор канала M1 на Motor Shield var motorOne = Motor.connect(Motor.MotorShield.M1); // подключаем второй мотор канала M2 на Motor Shield var motorTwo = Motor.connect(Motor.MotorShield.M2); // создаём объект анимация // для плавного изменения параметров вращения мотора var animMotor = require('@amperka/animation').create({ // начальное значение // при «0» мотор стоит from: 0, // конечное значение // при «1» мотор вращается с максимальной скоростью в одну сторону to: 1, // продолжительность полного перехода // за 5 секунд мотор пройдёт диапазон значений от нуля до единицы duration: 5, // шаг обновления: каждые 20 мс updateInterval: 0.02 }).queue({ // после завершения перехода, выполняем ещё одну операцию // начальное значение // при «-1» мотор вращается с максимальной скоростью в обратную сторону from: -1, // конечное значение // при «0» мотор стоит to: 0, // продолжительность полного перехода // за 5 секунд мотор пройдёт диапазон значений от минус единицы до нуля duration: 5 }); // номер мотора var motorNum = motorOne; // время вращения работы мотора var time = 10000; // обработчик анимации animMotor.on('update', function(val) { motorNum.write(val); }); // функция работы первого мотора var startMotorOne = () => { motorNum = motorOne; animMotor.play(); setTimeout(() => { startMotorTwo(); }, time); }; // функция работы второго мотора var startMotorTwo = () => { motorNum = motorTwo; animMotor.play(); setTimeout(() => { startMotorOne(); }, time); }; // запускаем функцию работы первого мотора startMotorOne();