Серво неплавное ускорение.

Tofer
Offline
Зарегистрирован: 01.12.2017

Привет!

У меня есть китайский моторчик 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 вращается быстрее, но опять с постоянной скоростью на всем диапазоне.

Может, что-то китайцы не так напаяли? 

Tofer
Offline
Зарегистрирован: 01.12.2017

Вот фотки получше.