ARDUINO Вопросы по библиотекам Servo, SoftServo

dxf

✩✩✩✩✩✩✩
17 Апр 2020
47
2
Вклинюсь в тему.
Подскажите пожалуйста, что не верно в коде, т.к. при заливке не работает как ожидалось.
Ожидается, что серва через 2с восстанавливает свой угол, если положение вала было сбито вручную.

C++:
#include <Arduino.h>
#include <Servo.h>

Servo servo;
uint32_t tmr;

void setup() {
  servo.attach(6);
  }

void loop() {
 if(millis() - tmr >= 2000) {
  servo.attach(6);
  tmr = millis();
  servo.write(100);
  servo.detach(); // Поворачиваем серво вручную на любой угол, ждем повтора цикла
  }
}
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
327
102
@dxf,
Вы слишком быстро делаете detach(); Серва не успевает отработать.
 

dxf

✩✩✩✩✩✩✩
17 Апр 2020
47
2
@Bruzzer, Спасибо с Servo.h задержка помогает, но с SoftServo.h уже нет.

C++:
#include <Arduino.h>
#include <SoftServo.h>

SoftServo servo;
uint32_t tmr;

void setup() {
  servo.attach(6);
  }

void loop() {
servo.tick();
if(millis() - tmr >= 2500) {
  servo.attach(6);
  tmr = millis();
  servo.write(100);
  delay(500);
  servo.detach(); // Поворачиваем серво вручную на любой угол, ждем повтора цикла
  }
}
Пытаюсь понять в чем проблема. Серва просто находится все время в отключенном состоянии.
 

Normalek

★✩✩✩✩✩✩
6 Авг 2021
140
39
@dxf, и не поможет, библиотека так написана. Хоть любую задержку ставить
C++:
  // отключить
    void detach() {
        _attached = false;
    }

bool tick() {

        if (_attached && millis() - _tmr50 >= 20) { //проверяем