У меня есть код, управляющий старым аналоговым сервоприводом, и все работает нормально.
Но когда я получил новый цифровой сервопривод, он не будет удерживать положение, а вернется в 0.
Помогите, что нужно?
Вот базовый код, основанный на Sweep:
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup()
{
myservo.attach(A1);
}
void loop()
{
for(pos = 0; pos <= 180; pos++) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
2 ответа
Сразу после вашего цикла for поместите:
while(1);
Перед закрывающей скобкой цикла () Это остановит программу в этой точке и не будет продолжать выполнять цикл for, который каждый раз объявляет pos = 0.
Я вижу, что этот вопрос был немного неточен.
Но я обнаружил, что есть еще один способ управления сервоприводом, а именно использование writeMicroseconds вместо myservo.write(90).
myservo.writeMicroseconds(1500); //
http://arduino.cc/en/Reference/ServoWriteMicroseconds
Похожие вопросы
Новые вопросы
arduino
ВОПРОСЫ ARDUINO ДОЛЖНЫ БЫТЬ СВЯЗАНЫ С ПРОГРАММИРОВАНИЕМ. Arduino - это платформа для прототипирования электроники с открытым исходным кодом, основанная на простом в использовании аппаратном и программном обеспечении. Вопросы должны относиться только к программированию Arduinos (как в коде). Общие вопросы по Arduino можно задать на https://arduino.stackexchange.com или https://forum.arduino.cc.