Серво неплавное ускорение.
- Войдите на сайт для отправки комментариев
Вс, 01/04/2018 - 15:59
Привет!
У меня есть китайский моторчик Doman RC-S1506MD 360.
Есть такой код:
#include <Servo.h>
Servo servo1;
float servoSpeed;
#define CALIBRATION_BUTTON_PIN 4
boolean calibrationButtonWasUp = true;
boolean calibrationLedEnabled = false;
float p3 = 0; // manipulator
int inputPin3 = A3;
boolean CCW = false;
int servoValue;
void setup() {
// put your setup code here, to run once:
pinMode(CALIBRATION_BUTTON_PIN, INPUT_PULLUP);
servo1.attach(9);
Serial.begin(9600);
}
void loop() {
boolean calibrationButtonIsUp = digitalRead(CALIBRATION_BUTTON_PIN);
if (calibrationButtonWasUp && !calibrationButtonIsUp) {
delay(1000);
calibrationButtonIsUp = digitalRead(CALIBRATION_BUTTON_PIN);
if (!calibrationButtonIsUp) {
if (CCW== false) {
CCW = true;}
else {
CCW = false;
}
}
}
p3 = analogRead(inputPin3);
servoSpeed = float(1500*(p3/1023));
if (CCW == false) {
servoValue = 1500+servoSpeed;
Serial.println(servoValue);
servo1.writeMicroseconds(servoValue);}
else {
Serial.println(servoValue);
servoValue = 1500-servoSpeed;
servo1.writeMicroseconds(servoValue);
}
}
Он управляет скоростью вращения с помощью потенциометра, а кнопкой меняет направление. Так вот, по часовой стрелке скорость вощзрастает плавно, а против часовой - ступенчато: 1500us - 1300us он не вращается, 1300us-1041 начинает вращаться и скорость не меняетмя, 1041us-772us- скорость возрастает, но опять на всем диапазоне вращается с одинаковой скоростью, 772us-0us вращается быстрее, но опять с постоянной скоростью на всем диапазоне.
Может, что-то китайцы не так напаяли?
Вот фотки получше.