Upgrade servo-скетча

PRSR
Offline
Зарегистрирован: 20.12.2017

Arduino UNO (оригинал),  MG90S (похож на оригинал)

Работающий скетч, который нужно дополнить новыми параметрами:

#include <Servo.h>
Servo myservo;

const int max_stops = 3;                    //количество временных точек
unsigned long_[max_stops] = {500, 2000, 5000};  //временные точки в миллисекундах
const int servo_speed_delay = 2;            //задержка в шагах при повороде (2 - быстро, 100 - медленно, 0 - нельзя)
const int angle = 90;                       //угол поворота (градусы от 0 до 170)

bool started = false;
int val;
int count;
unsigned long timer_delta;

void goto_(int pos) {
  for (int i=0; i<pos; i++) {
    myservo.write(i);
    delay(servo_speed_delay);
  }
  for (int i=pos; i>0; i--) {
    myservo.write(i);
    delay(servo_speed_delay);
  }
}

void setup() {
  Serial.begin(9600);
  Serial.println("Arduino started !");
  myservo.attach(9);
  myservo.write(0);
  pinMode(13, OUTPUT);
}

void loop() {
  if (started) {
    //если наступило время поднятия лапы сервы
    if (millis() - timer_delta >= time_[count] - 1 && millis() - timer_delta <= time_[count] + 1) {
      digitalWrite(13, LOW);
      goto_(angle);

      digitalWrite(13, HIGH);
      count++;
      if (count == max_stops) {
        delay(1000);
        started = false;
        digitalWrite(13, LOW);
        Serial.println("finished");
      }
    }
  }
  if (Serial.available() && !started) {         //если есть что принять и не было начато работы с мотором
    val = Serial.read();
    if (val == '1') {
      Serial.println("started");
      digitalWrite(13, HIGH);
      started = true;
      timer_delta = millis();
      count = 0;
    }
  }
}

Нужно добавить:

1) программируемую паузу (в мс) перед возвратом сервы

2) возврат сервы должен быть на максимальной скорости, а не как сейчас, когда она возвращается со скоростью указанную с строке "const int servo_speed_delay = X"

Нужно что бы в одну сторону она шла со скоростью как стоит в (вышеуказанном) параметре, а назад с максимально возможной.

"Лить воду" про гугл, ютуб и прочее не нужно, цену-сроки прошу на мыло  prsrpst(цобако)mail.ru  связь для оперативности, желательно держать через телеграм, но и другие способы возможны.

Сразу после доработки и проверки этого скетча, обсудим еще одну модернизацию, все то же самое , но работа только из крайних положений без мгновенного возврата и соответственно паузы из п.1.

 

 

 

harus
Offline
Зарегистрирован: 29.06.2016
void goto_(int pos) {
15   for (int i=0; i<pos; i++) {
16     myservo.write(i);
17     delay(servo_speed_delay);
18   }
19   delay(1000*back_delay);
20     myservo.write(0);
 
22   }
23 }

Ну и в начале скетча нужно добавить переменную

int back_delay = 10; // (например 10мс)

PRSR
Offline
Зарегистрирован: 20.12.2017

harus пишет:

Ну и в начале скетча нужно добавить переменную

int back_delay = 10; // (например 10мс)

Спасибо, будем проверять.

Скетч в работе, просьба пока не беспокоиться, об изменениях сообщу.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

PRSR пишет:

Скетч в работе, просьба пока не беспокоиться ...

Улыбнуло :)  Оч черьезный проект ! Там в исправлениях скобочка лишняя :)

Сергей Звягинцев
Offline
Зарегистрирован: 02.03.2017
PRSR
Offline
Зарегистрирован: 20.12.2017

Господа и дамы. всем спасибо, работа выполнена.

harus
Offline
Зарегистрирован: 29.06.2016

PRSR пишет:

Господа и дамы. всем спасибо, работа выполнена.

Этот раздел - не за СПАСИБО.

Это так, на будущее.

harus
Offline
Зарегистрирован: 29.06.2016

  

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

PRSR пишет:

Господа и дамы. всем спасибо, работа выполнена.

Взял этого "клиента" себе на заметку. Это не бесплатный раздел.

PRSR
Offline
Зарегистрирован: 20.12.2017

harus пишет:

Этот раздел - не за СПАСИБО.

Это так, на будущее.

brokly пишет:

Взял этого "клиента" себе на заметку. Это не бесплатный раздел.

1. Я читать умею.

2. Спасибо сказал всем тем, кто уделил внимание моему топику, согласно правил хорошего тона.

3. С тем кто первый откликнулся и предложил наиболее приемлемые условия, расчет был произведен незамедлительно и в полном объеме.