Hallo,
der eine oder andere hier kennt ja meine MobaTools. Bei der Ansteuerung von Steppermotoren wurde schon einige Male ( sicher zu Recht ) bemängelt, dass da keine Anfahr- und Bremsrampen möglich sind.
Das habe ich nun eingebaut.
Auch ist der Code intern aufgeteilt worden, was zu reduziertem Flash-Verbrauch führt, wenn nicht alle Features genutzt werden. Das ist für den Anwender aber transparent, er muss nichts dafür tun.
Ich habe schon möglichst gründlich getestet. Trotzdem wäre es schön, wenn sich jemand finden würde, der sich als Beta-Tester hergibt, und das Ganze auch nochmal ausprobiert. Man selbst ist ja manchmal etwas betriebsblind.
Es würde mich also freuen, wenn jemand das unabhängig testet, bevor ich das als neue Release für den Bibliotheksverwalter freigebe. Der aktuelle Source ist hier zu finden.
In den Beispielen ist auch ein Sketch dabei, mit dem man die Steppermethoden über den seriellen Monitor aufrufen kann.
Die neuen Aufrufe sind in der deutschen Doku V1.1 bereits enthalten ( die englische muss ich noch übersetzen ).
Die Rampe wird über ihre Länge in Steps und damit über die Beschleunigungs-/Bremsstrecke definiert ( Zahl der Steps von Stillstand bis zur vorgegebenen Geschwindigkeit ).
Fragen dazu oder Fehlermeldungen können hier, oder direkt in GitHub gestellt werden.
Ich werde auch im Parallelforum nachfragen, ob dort jemand Lust hat das zu testen
Release Notes:
V1.1.0
Funktionserweiterung:
Rampe für die Steppermotore. Die Länge der Rampe wird über die Anzahl Steps ( vom Stillstand bis zum Zieltempo ) definiert.
Die Zahl der Steppermotore ist per define auf 6 begrenzt. Dies ist jedoch keine harte Grenze mehr, sondern eher der Leistungsfähigkeit des verwendeten Prozessors angepasst um die IRQ-Belastung nicht zu groß werden zu lassen. Werden z.b. keine Softleds und Servos genutzt, kann dieser Wert in der MobaTools.h auch erhöht werden.Fehlerberichtigung
moving() gab falsche Werte bei Strecken größer +/- 32768, da eine temporäre Variable mit int statt long definiert war.Sonstiges:
Optimierter Flash-Verbrauch, wenn nur Teile der Funktionalität genutzt werden (z.B. nur Stepper-Motore amsteuern)
Dazu wurden die Softwarekomponenten auf mehrere .cpp Dateien verteilt, so dass der Linker optimieren kann. So werden jetzt nur die tatsächlich verwendeten Komponenten eingebunden. Dazu musste die ISR für Stepper und Softleds etwas umgeschrieben werden ( da beide den gleichen IRQ verwenden ). Stepper bzw Softled Funktionen sind als jeweils eigene Funktionen mit Attribut weak definiert.
In 'libraries.properties' muss die Zeile
dot_a_linkage=true
hinzugefügt werden. Damit werden erst alle *.cpp.o - Files in ein Archiv zusammengebunden bevor es an den Linker übergeben wird. Nur dann optimiert der Linker und bindet nur die .o Komponenten ein, die zum Auflösen der verwendeten Referenzen benötigt werden.
Aus Sicht des Anwenders ist dies transparent - es muss weiterhin nur die MobaTools.h eingebunden werden.