Ви не увійшли.
вот рабочий скетч ,
вот только скорость меня волнует , перепробовал увеличивать Stepper1.setMaxSpeed(6000); вплоть до 240000, разницы не заметил ,а в FLprog визуально быстрее, у меня драйвер работает в полушаговом режиме
#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
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);//выключаем
}
}
}
leons пише:компелируетса без ошибок
сурьёзно?
почти, не считая ковычек, дальше прикрутить потенциометр для регулировки скорости или задержки
завтра снесу всё железо буду пробовать , компелируетса без ошибок
#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
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(1000); //задержка на 1 секунду
}
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; // номер порта ENBL
void setup()
{
Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
pinMode(enblPin, OUTPUT); // устанавливаем порт ENBL на выход
pinMode(buttonPin, INPUT); // устанавливаем порт кнопки на вход
}
void loop() {
int buttonState = digitalRead(buttonPin); // читаем состояние порта кнопки и записываем в переменную
{
if (buttonState == HIGH) // делаем простую проверку нашей переменной, если на входе в порт кнопки присутствует напряжение
digitalWrite(endlPin, HIGH); // подаем 5 вольт на порт enbl
} else {
digitalWrite(enblPin, LOW); // выключаем enbl
}
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(1000); //задержка на 1 секунду
}
Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
}
т.е вам нужно одной кнопкой включать/выключать?
так , я выложу код
leons пише:ещё бы кнопку привязать вкл. выкл. к ENBL
так в чем проблема?
Учится говорят никогда не поздно , у меня с этим не сраслось. я больше по старинке возьму двух позиционный тумблер и буду переключать ENBL с +5в на GND а вот скорость регулировать потенциометром больше надо
Я не программист а так зашёл сюда ,как то нужно было сделать счётчик и помогла мне одна программка Flprog, а там с шаговиками как-то не дружат но пытаются по мелочи я про форумчян
leons пише:нашлась ошибка (1.13,12)
Главное, сам нашёл
Гость помог , ещё бы кнопку привязать вкл. выкл. к ENBL
с 13 пина может переназначить чтоб не моргал светодиод ??
нашлась ошибка (1.13,12)
вот тут ,AccelStepper Stepper1(1.13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
драйвер у меня другой
Помогите найти ошибку в скетче , мотор должен отработать 200 шагов по часовой и 100 против часовой и так в цикле , а шагает в одну сторону
#include <AccelStepper.h>
AccelStepper Stepper1(1.13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
int dir = 1; //используется для смены направления
int step = 2; //єто у нас будетшаг (если 1- на 200 двигаем,2-на 100)
int dist = 100; //дистанция
void setup()
{
Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(20000); //устанавливаем ускорение (шагов/секунду^2)
}
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(500); //задержка на 1 секунду
}
Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
}