Мой сервопривод начинает «меняться» (это то, что код говорит мне в любом случае), когда он установлен на 180 градусов.
Я пробовал искать по сайту так же, как и по Google, но, похоже, это что-то, что очень конкретно связано с записью в Servo продвинутого неповторяющегося способа.
Код, который изменяет сервопривод:
#include <SoftwareSerial.h>
#include <Servo.h>
const int rxPin = 12;
const int txPin = 13;
SoftwareSerial bluetooth (rxPin, txPin);
Servo myServo;
boolean canMove = true;
int rotation = 0;
int currentRotation = 0;
void setup() {
Serial.begin(9600); // Begins Serial communication
bluetooth.begin(9600);
myServo.attach(11); // Sets a servo on pin 11
}
void loop() {
// put your main code here, to run repeatedly:
// Checks if Serial has something to read
if (bluetooth.available() > 0) {
rotation = bluetooth.read(); // Reads it and sets it to an integer
}
currentRotation = myServo.read();
if (currentRotation != rotation) {
Serial.println("Current Rotation:");
Serial.println(currentRotation);
Serial.println("Set to:");
Serial.println(rotation);
for (int i = currentRotation; i < rotation; i++) {
Serial.println("Writing to servo");
myServo.write(i);
}
}
}
Существует программа обработки, которая отправляет данные в Arduino, но я прекрасно вижу, что цифры поступают в последовательный монитор Arduino (они варьируются от 0 до 180)
После этого в Serial Monitor отображается только:
Current Rotation:
93
Set to:
0
Current Rotation:
93
Set to:
0
Current Rotation:
93
Set to:
0
Current Rotation:
93
Set to:
0
Current Rotation:
93
Set to:
0
снова и снова. Сервопривод просто дергается взад и вперед. Единственный раз, когда он изменяется (номер, который нужно установить, поступает из программы обработки), это когда номер, для которого он установлен, равен 180. Затем он перемещается еще больше назад и вперед и говорит:
Current Rotation:
179
Set to:
180
Writing to servo
Current Rotation:
179
Set to:
180
Writing to servo
снова и снова. Что происходит и как я могу это исправить? Ура, и спасибо за помощь!