управление delay с потенциометра ( шаговый мотор )

leons
Offline
Зарегистрирован: 14.10.2019

   помогите дописать скетч ,  есть два варианта управления 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);//выключаем
 
 }
 
 } 

 }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. Что такое "управление delay"?

2. Где оно в коде?

3. Вы уверены, что вот в этой строчек комментарий правильный?

     delay(200); //задержка на 1 секунду

leons
Offline
Зарегистрирован: 14.10.2019

ЕвгенийП пишет:

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);//выключаем
 
 }
 
 } 

 }

 

leons
Offline
Зарегистрирован: 14.10.2019

думаю вот в таком варианте подправьте где ошибка

#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);//выключаем
 
 }
 
 } 

 }

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

А если не подправим?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

leons пишет:

 3.  нужно менять от 20 до 100 

 2. переделал , работает но коряво а именно нет плавности 

 1. я так  придумал 

Спрашиваю второй раз, т.к. ответов не получил

ЕвгенийП пишет:

1. Что такое "управление delay"?

2. Где оно в коде?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

ЕвгенийП пишет:

1. Что такое "управление delay"?

2. Где оно в коде?

Ах, Евгений! Оставте своми тщетные попытки. Человек там придумал и не нам, сирым, это разуметь дано.

Гриша
Offline
Зарегистрирован: 27.04.2014

asam пишет:

Ах, Евгений! Оставте своми тщетные попытки. Человек там придумал и не нам, сирым, это разуметь дано.

пустое... Петрович правильно спросил, хотя бы направит на правильное построение алгоритма, для начала. А уже потом за программу приниматься. 

Учиться без учителя не всем дано.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
А если не подправим?

...не боишься услышать ответ устами Донатаса Баниониса из фильма про "Клетчатого"?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

ТС , ты библиотеку используешь не по назначению.
Фигня, переделыйвай.

Есть там такой параметр *.setSpeed(float); отвечает за текущую скорость.
Вот его и регулируй, а про delay() забудь.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ТС уже решил свою проблему :-)))

http://forum.arduino.ua/viewtopic.php?id=2029&p=2

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ТС уже решил свою проблему :-)))

http://forum.arduino.ua/viewtopic.php?id=2029&p=2

ИИ определил, что под г0сть Вы зарегистрировались )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

ИИ определил, что под г0сть Вы зарегистрировались )))

Переобучите ИНС - глючит :)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

ИИ определил, что под г0сть Вы зарегистрировались )))

Переобучите ИНС - глючит :)

я его на этом форуме обучал, издержки )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

На этом? Значит опять китайскость виновата :(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

На этом? Значит опять китайскость виновата :(

не, контингент ))) PS хотя я на китайском до десяти бегло считаю...

leons
Offline
Зарегистрирован: 14.10.2019

Kakmyc пишет:
ТС , Есть там такой параметр *.setSpeed(float); отвечает за текущую скорость. Вот его и регулируй, а про delay() забудь.

и это тоже нужно