Мне нужно чтобы сервопривод опускался и поднимался каждые 2мин, но при использовании setInterval(), привод не возвращается в исходное положение. Код (Javascript): var servo = require('@amperka/servo').connect(P13); servo.write(0); setInterval(function() { servo.write(0); servo.write(180); }, 120000); Вот что я пытался сделать. В чем проблема?
Два оператора подряд. Серва получает первую команду servo.write(0), не успевает ее выполнить, и молниеносно вторую - servo.write(180) Здесь и останавливается/стоит.
Ну да. Только это JS и там пауз нет. Поэтому надо решать вопрос программно. Заводить переменную за пределами таймера, каждым вызовом менять ее состояние и отправлять на серву.
Это верно, но способ реализации алгоритма зависит, в том числе, и от возможностей, предоставляемых языком. Друже, я на мобильном телефоне, поэтому код не напишу. Расскажу алгоритм. До определения таймера создай переменную. Присвой ей значение 0. Внутри таймера создай такую конструкцию: если значение той переменной 0, то меняешь ее на 180, а если 180 - меняешь на 0. После чего отправляешь эту переменную на серву один раз. Попробуй сам, тебе понравится.