я делаю начальные шаги в освоении Ардуино. Столкнулся с первыми трудностями. Пытаюсь управлять серво через bluetooth с Андроида.
Пока управляю машинкой с COM-порта, работает безупречно. Как переключаюсь на BT - начинается дрожь вблизи положения 0. Как отходит от 0 градусов на 5 - дрожь почти пропадает, но иногда всё-таки подёргивается.
Изыскания в интернете по фразам типа "BT servo jitter arduino" выдают огромное количество материала в котором разобраться новичку сложно. Я так понимаю, есть какой-то изъян в библиотеке Servo.h - конфликт по прерываниям с последовательным портом. Но все многочисленные статьи очень расходятся, я что-то запутался в них.
В то же время, проблема, вроде-бы, должна быть очень распространённой, наверняка управлять сервой по BT пробовал каждый второй (если не первый). Буду благодарен за подсказки.
З.Ы. На всякий случай мой код:
- Код: Выделить всё • Развернуть
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0; // variable to store the servo position
int motor = 0;
void setup()
{
Serial.begin(9600); // initialize serial:
myservo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.print("Arduino control Servo Motor Connected OK");
Serial.print('\n');
}
void loop()
{
// if there's any serial available, read it:
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
motor = Serial.parseInt();
// do it again:
pos = Serial.parseInt();
// look for the newline. That's the end of your sentence:
// if (Serial.read() <> 0) {
myservo.write(pos); // tell servo to go to position in variable 'pos'
// delay(15); // waits 15ms for the servo to reach the position
Serial.print(pos, DEC);
// Serial.print("\n");
// }
}
}