Решил запилить небольшой проект. Купил серву постоянного вращения, т.к. нужно чтобы проворачивалась на несколько оборотов, troyka shield, arduino uno. Подключил по инструкции с сайта, для теста напрямую. Прошил простейший скетч: Код (C++): #include <Servo.h> Servo myservo; void setup() { myservo.attach(10, 500, 2500); } void loop() { myservo.write(500); delay(1000); myservo.write(500); delay(1000); myservo.detach(); } Собственно, жду, что серва пару раз провернётся и отключится. Но не тут-то было - работает постоянно. Подскажите, что я делаю не так? Как выбрать продолжительность и направление вращения?
Попробуйте добавить проверку Код (C++): #include <Servo.h> Servo myservo; void setup() { myservo.attach(10); } void loop() { if (myservo.attached()) { myservo.write(550); delay(1000); myservo.write(2400); delay(1000); myservo.detach(); } } Если в myservo.write передавать значение более чем 543, то это значение обрабатывается как микросекунды (допустимо от 544 до 2400)
Вставил проверку - в общем, вращается, но на величину delay ему пофиг - дернется и дальше продолжает, на detach так же ноль внимания.
а если так: myservo.write(1500); delay(1000); myservo.write(1000); delay(1000); myservo.write(1500); delay(1000); myservo.write(2000); delay(1000); myservo.write(1500);
myservo.write(val); val = 90; // стоим на месте val > 90; // крутим в одну сторону val < 90; // крутим в другую