Плавное серво

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

YURA200 пишет:

...где найти примеры таких скетчев .Или их не существует и надо эту программу создавать...

Вообще-то скетч - и есть программа.

Я Вам уже написал, что для того, о чем Вы пишете, нужно объедигить три элемента. С первыми двумя (работа с потенциометром и двигателем), как Вы утверждаете, Вы знакомы. Третий - функция преобразования - зависит исключительно от Ваших потребностей, поэтому, как она должна выглядеть, никому кроме Вам неизвестно.

Непонятно, какй пример Вы хотите увидеть, раз у Вас все есть (ну либо напишите, чего Вам не хватает). Если же Вы хотите, чтобы кто-то написал код за Вас, - это в другой раздел.

YURA200
Offline
Зарегистрирован: 25.06.2017

Здравствуйте .Я незнаю как сюда перекинуть скетчи которыми я пользовался .Если возможно объясните. Просто копированием и вставкой не получаеися   Везде примеры которые меня не устраивают или назначение скорости в начале и она не меняется или же потенциометром изменяется скорость не автоматически. С серво то же самое пример например здесь на вашем форуме. С двигателем постоянного тока в принципе понятно я пробовал через шилд и изменял временные задержки для изменения углов вращения, но этот двигатель меня интересует в последнюю очередь. Если вам интересно то могу и этот скетч скинуть.Меня интересует прежде всего серво и шаговые.Это мне нужно для поворота на определённый угол с изменением скорости лазерного луча

По поводу другого раздела по написанию кода, что вы имели ввиду Можно и это рассмотреть.

Logik
Offline
Зарегистрирован: 05.08.2014

Начнем с начала. На серву Вы выводите ШИМ. Он дискретный, может принимать одно из 256 состояний (или 1024 или даже больше, но для понимания сути не важно). Каждое из состояний ШИМ соответствует некоторому углу серв. Надеюсь это Вы и до меня знали. А смена состояния на соседнее - поворот на некоторый угол dF, небольшой около градуса . Если Вы через интервалы времени dT меняете состояние ШИМ на 1, то серва пытаетается каждый раз повернутся на dF. Имеем скорость dF/dT. Очевидно что изменяя интервалы времени dT будем менять скорость. Но то в идеале. В реале получим медленно и/или не равномерно или серва просто не успеет повернутся с заданой скоростю. Возможны и рывки и пр. неприятности. Для повышения скорости можна меняете состояние ШИМ не на 1, а на n. Тогда скорость можна увеличить, она n*dF/dT, но остальные проблемы почти не решаемы.

ПС. Не спрашивайте где взять код или либы. Поймете что делать - сами напишите, не поймете - прячте хлам в стол.

YURA200
Offline
Зарегистрирован: 25.06.2017

Здравствуйте
Пожалуйста кто может пояснить для шагового двигателя 28BYJ-48 5V какое надо ставить количество
шагов за полный оборот Я установил 200 вроде лучше так работает может это не правильно.
Возможно в этом скетче сделать так чтобы вал помимо регулировки скорости еще вращался на определённый угол в одну сторону затем обратно и тд

#include

#define pot A0

const int stepsPerRevolution = 200; // «200» - это количество шагов, за которые вал выполняет

// полный оборот; у вашего мотора это число может быть другим

// инициализируем библиотеку Stepper на контактах 8, 9, 10 и 11:

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0; // количество шагов, которые сделал мотор

void setup() {

// в блоке setup() ничего не делаем
pinMode(pot,INPUT);
}

void loop() {

// считываем значение потенциометра:

int sensorReading = analogRead(A0);

// подгоняем считанное значение под диапазон от «0» до «100»:

int motorSpeed = map(sensorReading, 0, 1023, 0, 48);

// задаем скорость мотора:

if (motorSpeed > 0) {

myStepper.setSpeed(motorSpeed);

// шагаем на 1/100 от полного оборота:

myStepper.step(stepsPerRevolution / 48);

}

}