Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
GyverLibs committed Mar 28, 2022
1 parent 0de37bf commit 01128dd
Show file tree
Hide file tree
Showing 23 changed files with 72 additions and 65 deletions.
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Foo](https://img.shields.io/badge/Version-2.5-brightgreen.svg?style=flat-square)](#versions)
[![Foo](https://img.shields.io/badge/Version-2.6-brightgreen.svg?style=flat-square)](#versions)
[![Foo](https://img.shields.io/badge/Website-AlexGyver.ru-blue.svg?style=flat-square)](https://alexgyver.ru/)
[![Foo](https://img.shields.io/badge/%E2%82%BD$%E2%82%AC%20%D0%9D%D0%B0%20%D0%BF%D0%B8%D0%B2%D0%BE-%D1%81%20%D1%80%D1%8B%D0%B1%D0%BA%D0%BE%D0%B9-orange.svg?style=flat-square)](https://alexgyver.ru/support_alex/)

Expand Down Expand Up @@ -380,6 +380,7 @@ int32_t getCurrent(); // получить текущую
void reset(); // сбросить текущую позицию в 0
// всякое
void autoPower(bool mode); // автоотключение мотора при достижении позиции - true (по умолч. false)
uint32_t getPeriod(); // получить текущий период тиков
void brake(); // резко остановить мотор
void pause(); // пауза - доехать до заданной точки и ждать (ready() не вернёт true, пока ты на паузе)
Expand Down Expand Up @@ -781,6 +782,11 @@ void loop() {
- v2.3 - fix compiler warnings, поддержка esp32
- v2.4 - повышена плавность движения шаговиков в Planner и Planner2. Исправлена бага в Stepper2
- v2.5 - исправлено плавное изменение скорости для KEEP_SPEED
- v2.6
- disable() в виртуальном режиме отключает сигнал с мотора (для 4-проводных драйверов)
- улучшена производительность для step-dir драйверов
- добавил autoPower() в GStepper2
- исправлен рывок при смене направления в GStepper

<a id="feedback"></a>
## Баги и обратная связь
Expand Down
3 changes: 2 additions & 1 deletion examples/Stepper/accelDeccelButton/accelDeccelButton.ino
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

//#define SMOOTH_ALGORITHM
#include <GyverStepper.h>
GStepper<STEPPER2WIRE> stepper(800, 2, 3, 12);
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);


void setup() {
Expand Down
1 change: 1 addition & 0 deletions examples/Stepper/demo/demo.ino
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);

// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2

Expand Down
5 changes: 2 additions & 3 deletions examples/Stepper/endSwitch/endSwitch.ino
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
// пример с концевиком
#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
// наша задача - при запуске крутить мотор в сторону до нажатия на кнопку
Expand Down
5 changes: 2 additions & 3 deletions examples/Stepper/potPos/potPos.ino
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// установка позиции потенциометром

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(115200);
Expand Down
5 changes: 2 additions & 3 deletions examples/Stepper/potSpeed/potSpeed.ino
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// установка скорости потенциометром

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
stepper.setRunMode(KEEP_SPEED); // режим поддержания скорости
Expand Down
5 changes: 2 additions & 3 deletions examples/Stepper/smoothAlgorithm/smoothAlgorithm.ino
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
#define SMOOTH_ALGORITHM

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 2, 3, 4, 5);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(115200);
Expand Down
5 changes: 2 additions & 3 deletions examples/Stepper/speed/speed.ino
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// крутимся с заданной скоростью

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
stepper.setRunMode(KEEP_SPEED); // режим поддержания скорости
Expand Down
3 changes: 2 additions & 1 deletion examples/Stepper/speedSerialControl/speedSerialControl.ino
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
// отправь r для скорости 100 град/сек

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(9600);
Expand Down
27 changes: 0 additions & 27 deletions examples/Stepper/stepdir/stepdir.ino

This file was deleted.

5 changes: 2 additions & 3 deletions examples/Stepper/stop/stop.ino
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// пример работы stop()
// на графике будет видно, как сместилась установка и мотор к ней затормозил
#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(115200);
Expand Down
5 changes: 2 additions & 3 deletions examples/Stepper/sweep/sweep.ino
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// крутим мотор туда-сюда плавно с ускорением

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(115200);
Expand Down
5 changes: 2 additions & 3 deletions examples/Stepper/timerISR/timerISR.ino
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
// используется GyverTimers

#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
// мотор с драйвером ULN2003 подключается по порядку пинов, но крайние нужно поменять местами
// то есть у меня подключено D2-IN1, D3-IN2, D4-IN3, D5-IN4, но в программе поменял 5 и 2
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(2048, 2, 5);

#include <GyverTimers.h>

Expand Down
3 changes: 2 additions & 1 deletion examples/Stepper2/SpeedControl/SpeedControl.ino
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// крутим мотор. Отправляй в сериал целое число, шаг/сек

#include "GyverStepper2.h"
GStepper2<STEPPER2WIRE> stepper(2048, 2, 3);
//GStepper2<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper2<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(9600);
Expand Down
3 changes: 2 additions & 1 deletion examples/Stepper2/StepperControl/StepperControl.ino
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
// r - продолжить
//#define GS_NO_ACCEL
#include "GyverStepper2.h"
GStepper2<STEPPER2WIRE> stepper(2048, 2, 3);
//GStepper2<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper2<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(9600);
Expand Down
3 changes: 2 additions & 1 deletion examples/Stepper2/homing/homing.ino
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
#define LIMSW_X 6

#include "GyverStepper2.h"
GStepper2<STEPPER2WIRE> stepper(2048, 2, 3);
//GStepper2<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper2<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
// пуллапим. Кнопки замыкают на GND
Expand Down
3 changes: 2 additions & 1 deletion examples/Stepper2/sweep/sweep.ino
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// крутим туда сюда, тикаем в loop

#include "GyverStepper2.h"
GStepper2<STEPPER2WIRE> stepper(2048, 2, 3);
//GStepper2<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper2<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(9600);
Expand Down
3 changes: 2 additions & 1 deletion examples/Stepper2/sweepISR/sweepISR.ino
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// крутим туда сюда, прерывание таймера

#include "GyverStepper2.h"
GStepper2<STEPPER2WIRE> stepper(2048, 2, 3);
//GStepper2<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper2<STEPPER2WIRE> stepper(2048, 2, 5);

void setup() {
Serial.begin(9600);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// включаем быстрый профиль, 10 участков
#define GS_FAST_PROFILE 10
#include "GyverStepper2.h"
//GStepper2<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper2<STEPPER2WIRE> stepper(2048, 2, 5);

uint32_t tar = 60000;
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=GyverStepper
version=2.5
version=2.6
author=AlexGyver <alex@alexgyver.ru>
maintainer=AlexGyver <alex@alexgyver.ru>
sentence=Fast library for stepmotor control and multi-axis planning
Expand Down
7 changes: 6 additions & 1 deletion src/GyverStepper.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@
v2.3 - fix compiler warnings, поддержка esp32
v2.4 - повышена плавность движения шаговиков в Planner и Planner2. Исправлена бага в Stepper2
v2.5 - исправлено плавное изменение скорости для KEEP_SPEED
v2.6
- disable() в виртуальном режиме отключает сигнал с мотора (для 4-проводных драйверов)
- улучшена производительность для step-dir драйверов
- добавил autoPower() в GStepper2
- исправлен рывок при смене направления в GStepper
*/

/*
Expand Down Expand Up @@ -221,7 +226,7 @@ class GStepper : public Stepper<_DRV, _TYPE> {

if (_curMode && _accel != 0) smoothSpeedPlanner(); // планировщик скорости KEEP_SPEED

if (tickUs - _prevTime >= stepTime) { // основной таймер степпера
if (stepTime && tickUs - _prevTime >= stepTime) { // основной таймер степпера
_prevTime = tickUs;

#ifdef SMOOTH_ALGORITHM
Expand Down
14 changes: 13 additions & 1 deletion src/GyverStepper2.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
void reset(); // сбросить текущую позицию в 0
// всякое
void autoPower(bool mode); // автоотключение мотора при достижении позиции - true (по умолч. false)
uint32_t getPeriod(); // получить текущий период тиков
void brake(); // резко остановить мотор
void pause(); // пауза - доехать до заданной точки и ждать (ready() не вернёт true, пока ты на паузе)
Expand Down Expand Up @@ -151,7 +152,7 @@ class GStepper2 : public Stepper<_DRV, _TYPE> {
#endif
} else { // приехали
if (revF) {
status = 0;
brake();
setTarget(bufT);
return status;
}
Expand Down Expand Up @@ -195,6 +196,7 @@ class GStepper2 : public Stepper<_DRV, _TYPE> {
dir = (speed > 0) ? 1 : -1;
us = 1000000L / abs(speed);
status = 3;
if (autoP) enable();
return 1;
}

Expand Down Expand Up @@ -284,6 +286,7 @@ class GStepper2 : public Stepper<_DRV, _TYPE> {
#endif
dir = (pos < tar) ? 1 : -1;
status = 1;
if (autoP) enable();
readyF = 0;
}

Expand Down Expand Up @@ -410,9 +413,15 @@ class GStepper2 : public Stepper<_DRV, _TYPE> {
#endif
}

// автоотключение мотора при достижении позиции - true (по умолч. false)
void autoPower(bool mode) {
autoP = mode;
}

// остановить мотор
void brake() {
status = 0;
if (autoP) disable();
}

// пауза (доехать до заданной точки и ждать). ready() не вернёт true, пока ты на паузе
Expand Down Expand Up @@ -447,6 +456,8 @@ class GStepper2 : public Stepper<_DRV, _TYPE> {
using Stepper<_DRV, _TYPE>::pos;
using Stepper<_DRV, _TYPE>::dir;
using Stepper<_DRV, _TYPE>::step;
using Stepper<_DRV, _TYPE>::enable;
using Stepper<_DRV, _TYPE>::disable;

// ============================= PRIVATE =============================
private:
Expand Down Expand Up @@ -474,6 +485,7 @@ class GStepper2 : public Stepper<_DRV, _TYPE> {
uint8_t status = 0;
bool readyF = 0;
bool changeSett = 0;
bool autoP = false;
uint32_t usMinN;
bool sp0 = 0;

Expand Down
16 changes: 13 additions & 3 deletions src/StepperCore.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,10 @@ class Stepper {
setPin(3, 0);
}
if (_enPin != 255) digitalWrite(_enPin, !_enDir);
} else if (*_power) _power(0);
} else {
if (*_power) _power(0);
if (*_step && (_DRV == STEPPER4WIRE || _DRV == STEPPER4WIRE_HALF)) _step(0);
}
}

// включить питание и EN
Expand All @@ -111,7 +114,10 @@ class Stepper {
// подадим прошлый сигнал на мотор, чтобы вал зафиксировался
if (_DRV == STEPPER4WIRE || _DRV == STEPPER4WIRE_HALF) step4();
if (_enPin != 255) digitalWrite(_enPin, _enDir);
} else if (*_power) _power(1);
} else {
if (*_power) _power(1);
if (*_step && (_DRV == STEPPER4WIRE || _DRV == STEPPER4WIRE_HALF)) step4();
}
}

// подключить обработчик шага
Expand Down Expand Up @@ -199,7 +205,10 @@ class Stepper {
// шажочек степдир
void stepDir() {
if (_TYPE == STEPPER_PINS) {
setPin(1, (dir > 0) ^ _globDir); // DIR
if (_pdir != dir) {
_pdir = dir;
setPin(1, (dir > 0) ^ _globDir); // DIR
}
setPin(0, 1); // step HIGH
if (DRIVER_STEP_TIME > 0) delayMicroseconds(DRIVER_STEP_TIME);
setPin(0, 0); // step LOW
Expand All @@ -211,6 +220,7 @@ class Stepper {
int8_t _enPin = 255;
bool _enDir = false;
bool _globDir = false;
int8_t _pdir = 0;
int8_t thisStep = 0;

void (*_step)(uint8_t a) = NULL;
Expand Down

0 comments on commit 01128dd

Please sign in to comment.