INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
15.01.2020, 10:25 (Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2020 10:28 von MicroBahner.)
Beitrag #1
MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
Hallo,
wen's interessiert ( und es noch nicht im Nachbarforum gelesen hat Wink ): es gibt eine neue Version der MobaTools, die jetzt auch auf dem ESP8266 lauffähig ist.

Da dort die Timerstruktur aber komplett anders ist, ergeben sich ein paar Einschränkungen ( aber auch eine Erweiterung )
  • Bei Steppern ist nur die Variante mit Step/Dir möglich ( mode=A4988 )
  • GPIO 16 kann nicht für Pulsausgänge (Servo, Softled, Step ) genutzt werden.
  • Wird die neue Stepper-Funktion zur enable-Steuerung verwendet, kann auch Dir nicht auf GPIO16 gelegt werden, da während der Vor/Nachlaufzeit ein Puls auf Dir erzeugt wird. Der enable-Ausgang selbst kann aber auf GPIO16 liegen.
  • Bei Softleds kann für ON und OFF ein PWM-Wert festgelegt werden. D.H. die Leds sind nach dem Auf/Abblenden nicht grundsätzlich voll an/aus.
  • Die Auf/Abblendzeit der Softleds kann bis zu 65 Sekunden betragen

Allgemeine Änderungen / Anmerkungen:
  • Die Klassennamen wurden geändert und vereinheitlicht. Die alten Namen können aus Kompatibilitätsgründen noch verwendet werden, werden in der IDE aber nicht mehr rot markiert.
  • Für Stepper gibt es die neue Methode attachEnable( PinNr, Delay, Level ). Damit wird im Stillstand des Steppers der Enable-Ausgang abgeschaltet. 'Delay' ist die Vor/Nachlaufzeit des enable-Pins in ms. 'Level' gibt an, ob der enable Ausgang LOW aktiv oder HIGH aktiv ist ( bei A4988 muss also z.B. LOW angegeben werden )

Zum ESP8266:
Ursprünglich wollte ich die Waveform-Funktionen des core nutzen, um die Impulse zu erzeugen. Diese Funktionen werden auch von tone() und analogWrite() genutzt. ( Der Esp erzeugt alle PWM per Software ). Leider hat sich herausgelstellt, das eine wesentliche Funktion nicht aus einer ISR heraus aufgerufen werden kann, was für die MobaTools aber essentiell ist.
Deshalb musste ich diesen Source aus dem core in die MobaTools integrieren und entsprechend anpassen. Da aber nur ein Timer zur Verfügung steht gibt es nun Konflikte mit den integrierten tone(), writeAnalog() und servo() Funktionen. Diese können nicht mehr parallel zu den MobaTools genutzt werden.
Nur für den ESP8266 gibt es deshalb eine neue Klasse 'MoToPwm'. Diese hat Methoden um gleichwertige Funktionalität bereitzustellen.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2020, 13:36
Beitrag #2
RE: MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
Vielen Dank für Deine unermüdliche Arbeit an den MoBaTools, deren Anwendungsmöglichkeiten mittlerweile weit über MoBa hinaus gehen.
Die Unterstützung des ESP8266 war mit Sicherheit ein großes Stück Arbeit.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2020, 14:40
Beitrag #3
RE: MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
Ja, beim ESP8266 musste ich einige Prinzipien der bisherigen Realisierung umschmeißen Wink .
Irgendwann will ich es auch noch auf Due und Teensy zum Laufen bringen. Die sind dem bisherigen ( AVR und STM ) wieder deutlich ähnlicher, was die Peripherie angeht. Da der ESP8266 aber doch recht häufig eingesetzt wird, erschien es mir sinnvoll den vorzuziehen. Vielleicht kann's ja tatsächlich jemand gebrauchen.
Hat aber auch Spaß gemacht sich da reinzuknien Cool

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2020, 10:03 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2020 10:05 von AnjinSan.)
Beitrag #4
RE: MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
Guten Morgen MicroBahner,
ich hätte da gerne mal ein Problem.
Nein quatsch, mir ist aufgefallen, dass in der Beschreibung zur Klasse MoToServo im Sketch (Zeile 40)unter:
meinServo.attach(servoPin);
eine Möglichkeit gibt, den Impuls noch nicht zu erzeugen.
Das wäre dann
meinServo.attach(servoPin, bool autoOff);
Im Sketch erzeugt das aber eine Fehlermeldung:
expected primary-expression before 'bool'
Wo ist hier mein Fehler?
Danke fürs aufklären.
lieben Gruß AnjinSan

[
Code:
#include <MobaTools.h>
/* Demo zum langsamen Bewegen eines Servos
* Die aktuelle Version der MoBatools erlaubt bis zu 16 Servos nur an beliebigen Pins
* Eine gleichzeitige Verwendung mit der Standard Servo Library des Arduino
* ist nicht möglich, da die gleichen HW-Komponenten verwendet werden.
* Die Aufrufe sind kompatibel zur Standard-Servo Library.
* zusätzliche Aufrufe:
* Servo2.setSpeed( wert ); Vorgabe der Geschwindigkeit. Je größer die Zahl, umso
*                          größer ist die Geschwindigkeit. Bei 0 (defaultwert)
*                          verhält das Servo sich wie bei der Standard Bibliothek
* byte = Servo2.moving();  gibt den noch verbleibenden Fahrweg in % vom gesamten
*                          Verfahrweg an. Bei 0 hat das Servo die Zielposition
*                           erreicht und steht.
* fehlende Aufrufe:
* writeMicroseconds() auch beim normalen write Aufruf können Microsekunden übergeben
*                     werden. Die Unterscheidung Winkel (0..180) und Mikrosekunden
*                    ( 700...2300 )ergibt sich aus dem Zahlenwert.
*
* Demo 02 : mit Abfrage der Servobewegung.
* In diesem Sketch kann das Servo erst umgesteuert werden, wenn es seine Zielposition
* erreicht hat und steht. Im Demo Servo_01 kann das Servo jederzeit umgesteuert werden
*/

// Die Taster müssen so angeschlossen sein, dass der Eingang bei gedrücktem
// Taster auf LOW (=0) geht.
const int tasterPin1 = 2;    //Taster1 Pin 2
const int tasterPin2 = 3;    //Taster2  Pin 3
const int servoPin =  9;  // Anschluß für den Servo
// bei Werten, die sich im Programm nie verändern, sollte immer 'const' vorangestellt
// werden


int tasterStatus1, tasterStatus2;
MoToServo meinServo;

void setup() {
    pinMode(tasterPin1, INPUT_PULLUP); // so ist kein externer pullup Widerstand am
    pinMode(tasterPin2, INPUT_PULLUP); // Taster erforderlich
    
    meinServo.attach(servoPin, bool autoOff); //Servo an Pin 9
    meinServo.setSpeed( 5 );    // Verfahrgeschwindigkeit einstellen
}

void loop() {
    tasterStatus1 = digitalRead(tasterPin1);
    tasterStatus2 = digitalRead(tasterPin2);

    if (tasterStatus1 == LOW && meinServo.moving() == 0 ) {
        meinServo.write(40); //wird langsam  drehen
        delay(100);
    }

    if (tasterStatus2 == LOW && meinServo.moving() == 0) {
        meinServo.write(120); //wird langsam drehen
        delay(100);
    }

    delay(20);

}

EDIT: Sketch eingefügt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2020, 11:00 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2020 11:02 von MicroBahner.)
Beitrag #5
RE: MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
(07.02.2020 10:03)AnjinSan schrieb:  eine Möglichkeit gibt, den Impuls noch nicht zu erzeugen.
Das wäre dann
meinServo.attach(servoPin, bool autoOff);

Hallo AnjinSan,
In der Beschreibung ist das so angegeben:
Zitat:byte myServo.attach( int pin, bool autoOff );
Wird der optionale Parameter 'autoOff' mit dem Wert 'true' übergeben, so wird der Impuls automatisch abgeschaltet, wenn sich die Länge für mehr als 1sec nicht ändert.
Das ist die Deklaration der Methode. Beim Aufruf musst Du dann dort einen entsprechenden Parameter eintragen. Bei 'bool autoOff' also entweder 'true' oder 'false'. Um autoOff einzuschalten musst Du dass also so aufrufen:
Code:
meinServo.attach(servoPin, true); //Servo an Pin 9
Übrigens geht es da nicht darum, den Impuls 'noch nicht' zu erzeugen, sondern darum den Impuls abzuschalten, wenn das Servo seine Zielposition erreicht hat.
Direkt nach dem attach werden grundsätzlich noch keine Impulse erzeugt. Das startet erst mit dem ersten 'write' Aufruf.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2020, 11:09
Beitrag #6
RE: MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
Hallo Franz-Peter,
ui, Danke für die schnelle Antwort.
jetzt, nach deiner Erklärung ist es mir klar geworden.
Genau, wegen Impuls aus bin ich drauf gekommen.
In unregelmässigen Abständen muckt der Servo, was ich so von diesen Fabrikat nicht kenne.
http://www.esu.eu/produkte/switchpilot/p...eb-metall/
Dann wäre da noch eine Frage:
die Parameter für int pos sind fest eingestellt oder auch hier durch andere Werte (zum Bsp. in pos50, int pos90)
ersetzbar?
lieben Gruß
AnjinSan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2020, 11:24
Beitrag #7
RE: MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
(07.02.2020 11:09)AnjinSan schrieb:  die Parameter für int pos sind fest eingestellt oder auch hier durch andere Werte (zum Bsp. in pos50, int pos90)
ersetzbar?
Hallo AnjinSan,
'Parameter' sind eigentlich immer dafür da, das man dort eigene Werte übergeben kann. Wo meinst Du das mit dem 'int pos' denn. 'int pos' bedeutet üblicherweise, dass man dort eine Integer-Zahl als Parameterwert übergeben kann.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2020, 11:30
Beitrag #8
RE: MobaTools Library: neue Version 2.0 läuft auch auf ESP8266
(07.02.2020 11:24)MicroBahner schrieb:  
(07.02.2020 11:09)AnjinSan schrieb:  die Parameter für int pos sind fest eingestellt oder auch hier durch andere Werte (zum Bsp. in pos50, int pos90)
ersetzbar?
Hallo AnjinSan,
'Parameter' sind eigentlich immer dafür da, das man dort eigene Werte übergeben kann. Wo meinst Du das mit dem 'int pos' denn. 'int pos' bedeutet üblicherweise, dass man dort eine Integer-Zahl als Parameterwert übergeben kann.

...bei" mit den Parametern pos= und pos180 kann vorgegeben werden, welche Impulslängen..."
hat sich aber durch deinen Satz mit den eigenen Parameter geklärt, werde ich wohl nicht verändern, läuft bereits gut.
Danke für deine Mühen.
Hoffe, ich kann mich in den nächsten Tagen noch durch die anderen Beispiele arbeiten.
Lieben Gruß
AnjinSan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Library Ethernet: Nicht zu compilieren GuaAck 5 177 22.02.2021 17:31
Letzter Beitrag: Tommy56
  Die && Verknuepfung von zwei Schaltern auf ESP8266 will nicht. gutschy 6 374 22.01.2021 22:25
Letzter Beitrag: hotsystems
  Library Fehler Karl Stanger 13 570 20.01.2021 17:29
Letzter Beitrag: Tommy56
  Timer läuft nicht so, wie ich wohl will Raging Ender 4 456 04.01.2021 19:26
Letzter Beitrag: Raging Ender
  HC-SR04 Alarmsketch läuft nicht richtig auf Digispark tapsi 9 626 31.12.2020 13:53
Letzter Beitrag: hotsystems
  OneButton Library > erkennen, dass keine Taste gedrückt ist Foto-Ralf 9 736 05.12.2020 17:07
Letzter Beitrag: RolandF
  Neue Arduino-Software Guekard 47 2.251 30.11.2020 12:51
Letzter Beitrag: hotsystems
  ESP8266 NTP Server Sommer-/Winterzeit simulieren? DO3GE 9 835 29.10.2020 16:17
Letzter Beitrag: hotsystems
  Mouse.h library Leonardo Schrittmotor 10 857 26.10.2020 21:35
Letzter Beitrag: Chopp
  Arduino IDE läuft nicht mehr Rainer2 12 2.533 10.06.2020 12:04
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste