Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
GyverLibs committed Apr 18, 2022
1 parent 101fa2b commit 0c0f6b7
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 11 deletions.
3 changes: 2 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.6.1-brightgreen.svg?style=flat-square)](#versions)
[![Foo](https://img.shields.io/badge/Version-2.6.2-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 @@ -788,6 +788,7 @@ void loop() {
- добавил autoPower() в GStepper2
- исправлен рывок при смене направления в GStepper
- v2.6.1 - поправлена бага в GStepper2
- v2.6.2 - оптимизированы вычисления в GStepper2, GPlanner и GPlanner2

<a id="feedback"></a>
## Баги и обратная связь
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.6.1
version=2.6.2
author=AlexGyver <[email protected]>
maintainer=AlexGyver <[email protected]>
sentence=Fast library for stepmotor control and multi-axis planning
Expand Down
6 changes: 3 additions & 3 deletions src/GyverPlanner.h
Original file line number Diff line number Diff line change
Expand Up @@ -213,16 +213,16 @@ class GPlanner {
us <<= shift;
if (us != 0 && us < GP_MIN_US) { // мы движемся! ААА!
int32_t v1 = 1000000L / us;
if (2L * V * V - (int32_t)v1 * v1 > 2L * a * S) { // треугольник
s1 = (2L * a * S - (int32_t)v1 * v1) / (4L * a);
if ((int32_t)V * V / a - ((int32_t)v1 * v1 / a >> 1) > S) { // треугольник
s1 = ((int32_t)S >> 1) - ((int32_t)v1 * v1 / a >> 2);
s2 = s1;
} else { // трапеция
s1 = ((int32_t)V * V - (int32_t)v1 * v1) / (2L * a);
s2 = S - (int32_t)V * V / (2 * a);
}
so1 = (int32_t)v1 * v1 / (2 * a);
} else { // не движемся
if ((int32_t)V * V > (int32_t)a * S) { // треугольник
if ((int32_t)V * V / a > S) { // треугольник
s1 = S / 2L;
s2 = s1;
} else { // трапеция
Expand Down
8 changes: 4 additions & 4 deletions src/GyverPlanner2.h
Original file line number Diff line number Diff line change
Expand Up @@ -457,15 +457,15 @@ class GPlanner2 {
int32_t v1 = bufV.get(0); // скорость начала отрезка
int32_t v2 = bufV.get(1); // скорость конца отрезка

if (2L * V * V - (int32_t)v1 * v1 - (int32_t)v2 * v2 > 2L * a * S) { // треугольник
s1 = (2L * a * S + (int32_t)v2 * v2 - (int32_t)v1 * v1) / (4L * a);
if ((V * V - ((int32_t)v1 * v1 >> 1) - ((int32_t)v2 * v2 >> 1)) / a > S) { // треугольник
s1 = ((int32_t)S >> 1) + (((int32_t)v2 * v2 >> 2) - ((int32_t)v1 * v1 >> 2)) / a;
s2 = 0;
} else { // трапеция
s1 = ((int32_t)V * V - (int32_t)v1 * v1) / (2L * a);
s2 = S - ((int32_t)V * V - (int32_t)v2 * v2) / (2L * a);
}
so1 = (int32_t)v1 * v1 / (2 * a);
so2 = (int32_t)v2 * v2 / (2 * a);
so1 = (int32_t)v1 * v1 / (2L * a);
so2 = (int32_t)v2 * v2 / (2L * a);
if (status != 4) {
if (v1 == 0) us = us0;
else us = 1000000ul / v1;
Expand Down
1 change: 1 addition & 0 deletions src/GyverStepper.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
- добавил autoPower() в GStepper2
- исправлен рывок при смене направления в GStepper
v2.6.1 - поправлена бага в GStepper2
v2.6.2 - оптимизированы вычисления в GStepper2, GPlanner и GPlanner2
*/

/*
Expand Down
4 changes: 2 additions & 2 deletions src/GyverStepper2.h
Original file line number Diff line number Diff line change
Expand Up @@ -263,9 +263,9 @@ class GStepper2 : public Stepper<_DRV, _TYPE> {
// расчёт точек смены характера движения
// s1 - окончание разгона, s1-s2 - равномерное движение, s2 - торможение
if (a > 0 && usMin < GS_MIN_US) { // ускорение задано и мин. скорость выше порога
if (2L * V * V - (int32_t)v1 * v1 > 2L * a * S) { // треугольник
if ((int32_t)V * V / a - ((int32_t)v1 * v1 / a >> 1) > S) { // треугольник
if (revF) s1 = 0;
else s1 = (2L * a * S - (int32_t)v1 * v1) / (4L * a);
else s1 = ((int32_t)S >> 1) - ((int32_t)v1 * v1 / a >> 2);
s2 = s1;
} else { // трапеция
s1 = ((int32_t)V * V - (int32_t)v1 * v1) / (2L * a);
Expand Down

0 comments on commit 0c0f6b7

Please sign in to comment.