управление delay с потенциометра ( шаговый мотор )
- Войдите на сайт для отправки комментариев
Сб, 09/11/2019 - 15:12
помогите дописать скетч , есть два варианта управления 1. скоростью мотора 2. функция deley
выбрал второй вариант
#include <AccelStepper.h>
AccelStepper Stepper1(1,11,12); //использует пин 12 и 11 для dir и step, 1 - режим "external driver"
int dir = 1; //используется для смены направления
int step = 2; //єто у нас будетшаг (если 1- на 100 двигаем,2-на 200)
int dist = 400; //дистанция
int buttonPin = 2; // номер порта нашей кнопки
int EnblPin = 13; // номер порта ENBL
int analogPin = A0; // номер пина переменного резистора
int val = 0; // переменная для хранения значения
void setup()
{
Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
pinMode(13, OUTPUT);
}
void loop()
{
if(Stepper1.distanceToGo()==0)
{ //проверка, отработал ли двигатель предыдущее движение
if (step==1) //если біл шаг 2- тогда следующий -1
{
step = 2;
dist = 100;
}
else
{
step = 1;
dist = 200;
}
Stepper1.move(dist*dir);
dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении
delay(200); //задержка на 1 секунду
}
Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
{
if(digitalRead(2)==HIGH)//если кнопка нажата ...
{
digitalWrite(13,HIGH);//включаем светодиод
}
else//если не нажата...
{
digitalWrite(13,LOW);//выключаем
}
}
}
1. Что такое "управление delay"?
2. Где оно в коде?
3. Вы уверены, что вот в этой строчек комментарий правильный?
delay(200);//задержка на 1 секунду1. Что такое "управление delay"?
2. Где оно в коде?
3. Вы уверены, что вот в этой строчек комментарий правильный?
delay(200);//задержка на 1 секунду3. нужно менять от 20 до 100
2. переделал , работает но коряво а именно нет плавности
1. я так придумал
#include <AccelStepper.h> AccelStepper Stepper1(1,11,12); //использует пин 12 и 11 для dir и step, 1 - режим "external driver" int dir = 1; //используется для смены направления int step = 2; //єто у нас будетшаг (если 1- на 100 двигаем,2-на 200) int dist = 400; //дистанция int buttonPin = 2; // номер порта нашей кнопки int EnblPin = 13; // номер порта ENB #define ANALOG_IN A0 void setup() { Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду) Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2) pinMode(13, OUTPUT); } void loop() { if(Stepper1.distanceToGo()==0) { //проверка, отработал ли двигатель предыдущее движение if (step==1) //если біл шаг 2- тогда следующий -1 { step = 2; dist = 100; } else { step = 1; dist = 200; } Stepper1.move(dist*dir); dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлени int analog_in = analogRead(ANALOG_IN); delay(analog_in); //задержка } Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя { if(digitalRead(2)==HIGH)//если кнопка нажата ... { digitalWrite(13,HIGH);//включаем светодиод } else//если не нажата... { digitalWrite(13,LOW);//выключаем } } }думаю вот в таком варианте подправьте где ошибка
#include <AccelStepper.h> AccelStepper Stepper1(1,11,12); //использует пин 12 и 11 для dir и step, 1 - режим "external driver" int dir = 1; //используется для смены направления int step = 2; //єто у нас будетшаг (если 1- на 100 двигаем,2-на 200) int dist = 400; //дистанция int buttonPin = 2; // номер порта нашей кнопки int EnblPin = 13; // номер порта ENB int sensorPin = A0; // аналоговый вывод A0 для потенциометра int sensorValue = 0; // значение, поступаемое от потенциометра void setup() { Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду) Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2) pinMode(13, OUTPUT); } void loop() { if(Stepper1.distanceToGo()==0) { //проверка, отработал ли двигатель предыдущее движение if (step==1) //если біл шаг 2- тогда следующий -1 { step = 2; dist = 100; } else { step = 1; dist = 200; } Stepper1.move(dist*dir); dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлени sensorValue = analogRead(sensorPin); // считываем данные из потенциометра sensorValue = map(sensorValue, 0, 1023, 0, 80); // распределяем данные из интервала 0-1023 в интервал 0-255 delay(sensorValue); //задержка на 1 секунду } Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя { if(digitalRead(2)==HIGH)//если кнопка нажата ... { digitalWrite(13,HIGH);//включаем светодиод } else//если не нажата... { digitalWrite(13,LOW);//выключаем } } }А если не подправим?
3. нужно менять от 20 до 100
2. переделал , работает но коряво а именно нет плавности
1. я так придумал
Спрашиваю второй раз, т.к. ответов не получил
1. Что такое "управление delay"?
2. Где оно в коде?
1. Что такое "управление delay"?
2. Где оно в коде?
Ах, Евгений! Оставте своми тщетные попытки. Человек там придумал и не нам, сирым, это разуметь дано.
Ах, Евгений! Оставте своми тщетные попытки. Человек там придумал и не нам, сирым, это разуметь дано.
пустое... Петрович правильно спросил, хотя бы направит на правильное построение алгоритма, для начала. А уже потом за программу приниматься.
Учиться без учителя не всем дано.
...не боишься услышать ответ устами Донатаса Баниониса из фильма про "Клетчатого"?
ТС , ты библиотеку используешь не по назначению.
Фигня, переделыйвай.
Есть там такой параметр *.setSpeed(float); отвечает за текущую скорость.
Вот его и регулируй, а про delay() забудь.
ТС уже решил свою проблему :-)))
http://forum.arduino.ua/viewtopic.php?id=2029&p=2
ТС уже решил свою проблему :-)))
http://forum.arduino.ua/viewtopic.php?id=2029&p=2
ИИ определил, что под г0сть Вы зарегистрировались )))
ИИ определил, что под г0сть Вы зарегистрировались )))
Переобучите ИНС - глючит :)
ИИ определил, что под г0сть Вы зарегистрировались )))
Переобучите ИНС - глючит :)
я его на этом форуме обучал, издержки )))
На этом? Значит опять китайскость виновата :(
На этом? Значит опять китайскость виновата :(
не, контингент ))) PS хотя я на китайском до десяти бегло считаю...
и это тоже нужно