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
  Arduino IDE läuft nicht mehr Rainer2 12 1.132 10.06.2020 12:04
Letzter Beitrag: Tommy56
  Eigene Library erstellen Groomit 7 488 23.05.2020 22:03
Letzter Beitrag: MicroBahner
  Fehler bei eigener Library Samu_wo 4 462 20.04.2020 15:51
Letzter Beitrag: Samu_wo
  Km Stand auch nach dem Ausschalten Anfänger2020 11 1.076 01.03.2020 18:46
Letzter Beitrag: hotsystems
  LEXUS2K/ssd1306 Library Rockman 2 521 04.01.2020 17:06
Letzter Beitrag: hotsystems
  Welche Library für BMP/BME280 ggf. BME680 Arduino4Fun 4 1.106 22.12.2019 11:03
Letzter Beitrag: Franz54
  Programm läuft auf UNO aber nicht auf ATTINY85 Diwo13 55 4.436 17.12.2019 17:45
Letzter Beitrag: Diwo13
  Mp3-Modul library Problem Prospekteur 1 853 28.09.2019 20:30
Letzter Beitrag: hotsystems
  Atmega 328 Sketchl läuft auf UNO3, alleine auf Breadboard nicht delay 9 1.934 02.08.2019 15:03
Letzter Beitrag: hotsystems
Question Programm läuft nicht richtig CMeeep 22 2.881 04.07.2019 21:58
Letzter Beitrag: Franz54

Gehe zu:


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