Управление сервоприводом DS04-NFC

Для сервопривода непрерывного вращения DS04-NFC нужно использовать такие импульсы:

  • вращение против часовой стрелки — 1 мс;
  • останов вращения — 1.5 мс;
  • вращение по часовой стрелки — 2 мс;
1 лайк

Вот так работает, но мне нужно без delay()

Мне delay() всю программу тормозит

#include <Servo.h>

Servo motor;

void setup() {
  motor.attach(9);       // Подключение сервопривода к пину 9
}

void loop() {
  motor.attach(9);       // Подключение сервопривода к пину 9
  motor.write(-80);          // Повернуть на 80 градусов
  delay(1000);
  motor.write(80);
  motor.detach();       // Подключение сервопривода к пину 9
  delay(1000);
}

«Шило, мочало - начинаем сначала»???

Сервопривод непрерывного вращения — это тип сервопривода, вал которого может вращаться бесконечно, а не только в определённом диапазоне, как у обычных сервоприводов. Он фактически представляет собой небольшой мотор в корпусе сервопривода, управляемый с помощью ШИМ-сигнала (широтно-импульсной модуляции), который задаёт скорость и направление вращения вместо положения вала.

И? Ты не читаешь что тебе пишут?

Читаю

Ну а что тогда «из пустого в порожнее»?


Вот такой код какой результат даёт?


#include <Servo.h>

Servo motor;

void setup() {
  motor.attach(9);       // Подключение сервопривода к пину 9

  motor.write(-80);          // Повернуть на 80 градусов
  motor.writeMicroseconds(1500);   // Остановить сервопривод

}

void loop() {

}

Сервопривод стоит

Ну и? Ты этого же хотел?

Аттачи все убери в loop(), а вместо дэтача используй врайтМикросекондс(1500).

Пробуй, потом расскажешь. Эх, молодёжжж )))

Сначала он повернулся на 80 градусов, остановился, потом начал бесконечно крутиться

#include <Servo.h>

Servo motor;

void setup() {
  motor.attach(9);       // Подключение сервопривода к пину 9
}

void loop() {
  motor.write(80);          // Повернуть на 80 градусов
  motor.writeMicroseconds(3000);
  motor.write(80);
  motor.writeMicroseconds(3000);
}

А нахуа ты вместо 1.5мс

Запердолил 3мс ???

Это тебе не каша. Я сомневаюсь, что ты:

Так он вообще не крутиться

#include <Servo.h>

Servo motor;

void setup() {
  motor.attach(9);       // Подключение сервопривода к пину 9
}

void loop() {
  motor.write(80);          // Повернуть на 80 градусов
  motor.writeMicroseconds(1500);
  motor.write(80);
  motor.writeMicroseconds(1500);
}

Бл#ть, я сдаюсь. Ну написал же:

Что не понятного?
А если не заработает «с наскока», придётся менять логику работы с сервоприводом…

На кой?

не тоже самое, что и myServo.write(0); ?

Непробиваемый :laughing:

Так я всё сделал как Вы сказали

Я хз сколько оно шлёт при врайт (0), а так точно наглядно видно и понятно (и соответствует требованиям сервы).

А накой они там нужны, если он не будет делать дэтача? Один раз в сетапе аттач сделал и хватит…))

Ииии? Своё сообщение то прочитайте :slightly_smiling_face:

Что не так? Скопируй, я не понимаю на что ты намекаешь…

:slightly_smiling_face: