Hilfe zu Arduino(UNO)Sketch gesucht für FB

Bereich für alle Themen rund um die Modellbahn-Elektronik und elektr. Umbauten für Analogbetrieb.

volkerS
InterCityExpress (ICE)
Beiträge: 2062
Registriert: Di 14. Okt 2014, 11:37
Nenngröße: H0
Stromart: AC
Steuerung: MS1/ MS2 /analog
Gleise: C-Gleis
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#126

Beitrag von volkerS » Do 15. Aug 2019, 21:17

Hallo Rainer,
hast du
SLEP
RST gebrückt und an 5V vom Arduino angeschlossen?
Wenn nein,
dann ist dein DRV8825 sowohl im Reset- als auch Sleep-Mode.
Beim Stromeinstellen hast du am DRV8825 ja nur den Takt angehalten (High an Drv).
Das Blinken der Led ist typisch für eine Beschleunigung, dann Bewegung und am Ende abbremsen. Allerdings sind 1,5min wohl zu lang für ein Toröffnen, oder?
Volker

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#127

Beitrag von ts250x » Fr 16. Aug 2019, 06:51

Hallo Volker,
volkerS hat geschrieben:
Do 15. Aug 2019, 21:17
hast du
SLEP
RST gebrückt und an 5V vom Arduino angeschlossen?
Wenn nein,
dann ist dein DRV8825 sowohl im Reset- als auch Sleep-Mode.
NEIN da habe ich nichts angeschlossen. Bist du dir mit RST an 5V sicher ? denn das habe ich so verstanden dass man dort mit 5 V das Reset einleitet..
Versuchen kann ich das ja mal....
volkerS hat geschrieben:
Do 15. Aug 2019, 21:17
Allerdings sind 1,5min wohl zu lang für ein Toröffnen, oder?
JA das ist eindeutig zu lange ein 10tel der Zeit wäre noch OK

die 1700 Steps habe ich so berechnet: 200 Steps für eine Umdrehung * 8,5 mm Weg = 1700, aber jetzt beim schreiben fällt mir noch ein,
die Welle bewegt sich Pro Umdrehung = Gewindesteigung 0,5 mm, dann müssten 17 Umdrehungen gemacht werden. das wären dann
17*200 = 3400 Steps :bigeek:

Aber soweit bin ich ja leider noch nicht :oops:
Gruß Rainer


volkerS
InterCityExpress (ICE)
Beiträge: 2062
Registriert: Di 14. Okt 2014, 11:37
Nenngröße: H0
Stromart: AC
Steuerung: MS1/ MS2 /analog
Gleise: C-Gleis
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#128

Beitrag von volkerS » Fr 16. Aug 2019, 07:29

Hallo Rainer,
ja ich bin mir da ganz sicher.
1. hattest du es ja bei der Stromeinstellung auch, und da konntest du einen Strom messen.
2. hier ein Auszug aus den Datenblatt:
Reset Input: Active-low reset input initializes the indexer logic and disables the H-bridge outputs. Internal pulldown.
Sleep mode Input: Logic high to enable device, logic low to enter low-power sleep mode. Internal pulldown.
3. Google mal nach Bildern des DRV8825. In allen Bildern mit Arduino sind Reset und Sleep an High.
4. Lies noch mal Beitrag #113.
Volker

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#129

Beitrag von ts250x » Fr 16. Aug 2019, 08:00

Hallo Volker,
Sorry.............. das ich das in Frage gestellt habe :oops:
Du hast natürlich RECHT.
Nun werde ich den Nächsten Versuch angehen....
Danke das du dir die Zeit genommen hast mir zu Antworten :gfm:
Gruß Rainer

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#130

Beitrag von ts250x » Fr 16. Aug 2019, 08:21

Hallo @ ALL
Hallo Volker, Franz-Peter
E R F O L G
ER Dreht sich..............zwar noch Viel zu weit............aber das ist jetzt eine Sache der Eingabe im Sketch
Gruß Rainer

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#131

Beitrag von ts250x » Fr 16. Aug 2019, 11:34

Hallo @ All,
zwischen Bericht mit Fragen...
Der Motor wird warm bzw. Heiß auch im Stillstand...
Also habe ich im Sketch den Pin 12 zum Einschalten der Treiberplatine genommen.
Das funktioniert auch soweit..... doch bis dahin war es ein weiter Weg mit mir unerklärlichen Verhalten.
Am besten Zeige ich Euch mal den Sketch so wie er jetzt funktioniert.

Die Delay Zeiten mit 20000 waren notwendig damit der Motor auch seine jetzt 300 Steps machen kann, das wundert mich doch sehr .... müssen da eventuell { geschweifte klammern gesetzt werden damit das nacheinander abläuft ??
Eigentlich wollte ich das folgender Maßen Programmieren:
Wenn FB 1 gedrückt dann Treiber Pin 12 Einschalten ca.2ms warten bis der Treiber hochgefahren ist dann den Motor 300 Stepps machen lassen etwas warten dass er auch zur Ruhe kommt =delay 20ms dann den Treiber ausschalten..

Das funktioniert so überhaupt nicht da der Treiber nur ganz kurz eingeschaltet wird und dann gleich wieder ausgeschaltet somit kann der Motor sich nicht bewegen....???

Code: Alles auswählen

#include <MobaTools.h>
#include <IRremote.h>
#include <Arduino.h>
Stepper4 T1Stepper(200, A4988);
int T1Slp_PIN = 12;
int RECV_PIN = 13;                          //Pin am Arduino Nano für den IR Receiver
IRrecv irrecv(RECV_PIN);                   //Objekt initialisieren für die IR Übertragung
decode_results results;

void setup()
{
  T1Stepper.attach( 10, 11 );   // Step und Dir-Pin
  T1Stepper.setSpeedSteps( 200, 50 );
  irrecv.enableIRIn();   //Dieser Befehl initialisiert den Infrarotempfänger.
  pinMode(T1Slp_PIN, OUTPUT);
  pinMode(RECV_PIN, INPUT);         //Den IR Pin als Eingang deklarieren.
  Serial.begin(9600);             //Serielle kommunikation mit 9600 Baud beginnen.
}

void loop()
{

  if (irrecv.decode(&results)) {
    Serial.println (results.value, DEC);
    irrecv.resume();
  }

  if (results.value == 16724175) {          // wenn der Infrarot Empfänger die Zahl erkennt
    digitalWrite(12, HIGH);
    //digitalWrite(T1Slp_PIN, HIGH);
    //delay(20);
    T1Stepper.doSteps(300);                 //  Taste 1 macht 300 Schritte nach „rechts“
    delay(20000);
    digitalWrite(T1Slp_PIN, LOW);
  }
  if (results.value == 16718055) {           // Taste 2
    digitalWrite(12, HIGH);
    // digitalWrite(T1Slp_PIN, HIGH);
    //delay(20);
    T1Stepper.doSteps(-300);                // macht 300 Schritte nach „links“
    delay(20000);
    digitalWrite(T1Slp_PIN, LOW);
  }
}
Hat jemand eine Idee wie das Programmiert werden muss ==??? :oops:
Gruß Rainer


volkerS
InterCityExpress (ICE)
Beiträge: 2062
Registriert: Di 14. Okt 2014, 11:37
Nenngröße: H0
Stromart: AC
Steuerung: MS1/ MS2 /analog
Gleise: C-Gleis
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#132

Beitrag von volkerS » Fr 16. Aug 2019, 12:38

Hallo Rainer,
sehe ich das richtig?
delay 20 für hochfahren (20ms; derzeit aus, so hat der Treiber keine Zeit zum hochfahren)
delay 20000 für runterfahren? (20sec)
Wenn ja, dann vertauscht.
Ich würde beide delay auf 1000 setzen (1sec).
Volker
Edit: drehe während der Testzeit den Strom zurück, der Motor muss sich ja nur selbst bewegen, da reicht 30%.

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#133

Beitrag von ts250x » Fr 16. Aug 2019, 16:27

Hallo Volker,
volkerS hat geschrieben:
Fr 16. Aug 2019, 12:38
sehe ich das richtig?
delay 20 für hochfahren (20ms; derzeit aus, so hat der Treiber keine Zeit zum hochfahren)
Du hast bestimmt auch die beiden Slash// gesehen. Das mit den 20ms hat ja nicht funktioniert, Meine Annahme für dieses ist dass die Taste der FB kürzer ihr Signal sendet somit kommt es nicht zum Steppen.
Was meinst du mit (20ms;derzeit??aus,so hat der Treiber keine Zeit zum hochfahren)

Die 20sec, benötigt der Lauf vom Motor vom 1 Stepp bis zum letzten Stepp, wenn ich das kürzer mache
also z.B. 10 sec dann hält der Motor zu früh an macht dann nur ca. 150 Stepps.

Deshalb meine Frage ob da { } Klammern eingefügt werden sollten/ müssen ?? oder gibt es eine andere Methode wie das Letzte Delay auch erst nach den getanen Stepps sich einschaltet und den Pin 12 auf LOW setzt.
volkerS hat geschrieben:
Fr 16. Aug 2019, 12:38
drehe während der Testzeit den Strom zurück, der Motor muss sich ja nur selbst bewegen, da reicht 30%.
Durch das Abschalten des Treibers wird der Motor nicht mehr warm... somit brauche ich den Strom nicht weiter zu begrenzen
Gruß Rainer


volkerS
InterCityExpress (ICE)
Beiträge: 2062
Registriert: Di 14. Okt 2014, 11:37
Nenngröße: H0
Stromart: AC
Steuerung: MS1/ MS2 /analog
Gleise: C-Gleis
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#134

Beitrag von volkerS » Fr 16. Aug 2019, 20:01

Hallo Rainer,
Arduino ist nicht meine Welt, ich löse meine Schaltungen mit Pic`s.
Deine Aufgabenstellung würde ich so lösen:
Initialisierung:
Lese EEProm (so weiß der Controller wie die Tore stehen)
alternativ
Referenzfahrt aller Tore (zur Sicherheit auf, falls eine Lok im Tor steht)
Hauptroutine:
Warte auf Tasteneingabe an der FB-Schleife
FB-Tastendruck erkannt
springe zur entsprechender Subroutine x
Subroutine x:
Abfrage, die prüft ob es sich um eine Tastendruckwiederholung handelt.
(2x oder mehr gleiche Richtung fürs Tor ist Unfug. )
Wenn ja zurück zur FB-Schleife sonst weiter
Wecke Motortreiber (T1Slp_PIN, High)
Pause z.B. 100ms (delay 100)
Lege Drehrichtung fest (T1Dir, High or Low)
Takte Motor z.B. 300 Schritte (T1stepper,do.steps 300)
Pause z.B. 50ms (delay 50)
schicke Motortreiber schlafen (T1Slp_PIN, LOW)
Option:
(schreibe aktuelle Torposition in EEProm), so weiß der Controller beim Initiallisieren (PowerUp) durch EEProm-Lesen wie die Tore stehen.
Zurück zur FB-Schleife (Hauptroutine)
Solange sich der Controller in der Subroutine befindet werden weitere FB-Befehle ignorriert.
Volker

Benutzeravatar

MicroBahner
InterCityExpress (ICE)
Beiträge: 2332
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 69

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#135

Beitrag von MicroBahner » Sa 17. Aug 2019, 07:03

Hallo Rainer,
erstmal schön, dass sich bei dir was dreht 8) .

Zu deinen Problemen:
Zum einen darfst Du den Stepper nur starten wenn auch wirklich ein Befehl empfangen wurde. Also in dem if-Block mit der Abfrage auf einen erkannten Tastendruck
Dann: wie reagiert deine FB auf längere Tastendrücke? Wenn sie da einen eigenen 'Wiederholcode' sendet ( den Du dann ja ignorierst ) ist alles ok.
Und das Abschalten des enable solltest Du nicht über die Zeit machen. Du kannst abfragen, ob sich der Motor noch dreht, und wenn nicht, dann abschalten.
Etwa so:

Code: Alles auswählen

#include <MobaTools.h>
#include <IRremote.h>
#include <Arduino.h>
Stepper4 T1Stepper(200, A4988);
int T1Slp_PIN = 12;
int RECV_PIN = 13;                          //Pin am Arduino Nano für den IR Receiver
IRrecv irrecv(RECV_PIN);                   //Objekt initialisieren für die IR Übertragung
decode_results results;

void setup()
{
  T1Stepper.attach( 10, 11 );   // Step und Dir-Pin
  T1Stepper.setSpeedSteps( 200, 50 );
  irrecv.enableIRIn();   //Dieser Befehl initialisiert den Infrarotempfänger.
  pinMode(T1Slp_PIN, OUTPUT);
  pinMode(RECV_PIN, INPUT);         //Den IR Pin als Eingang deklarieren.
  Serial.begin(9600);             //Serielle kommunikation mit 9600 Baud beginnen.
}

void loop()
{

  if (irrecv.decode(&results)) {
    Serial.println (results.value, DEC);
	  if (results.value == 16724175) {          // wenn der Infrarot Empfänger die Zahl erkennt
		digitalWrite(12, HIGH);
		//digitalWrite(T1Slp_PIN, HIGH);
		//delay(20);
		T1Stepper.doSteps(300);                 //  Taste 1 macht 300 Schritte nach „rechts“
	  }
	  if (results.value == 16718055) {           // Taste 2
		digitalWrite(12, HIGH);
		// digitalWrite(T1Slp_PIN, HIGH);
		//delay(20);
		T1Stepper.doSteps(-300);                // macht 300 Schritte nach „links“
	  }
    irrecv.resume();
  }
  if (!T1Stepper.moving() ) {
     digitalWrite(T1Slp_PIN, LOW);
  }
}
Testen kann ich das z.Z. aber leider nicht. Tippfehler sind möglich ;)

P.S. Arduino.h musst Du nicht einbinden, das wird automatisch gemacht.

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#136

Beitrag von ts250x » Sa 17. Aug 2019, 10:10

Hallo Volker, Hallo Franz-Peter, Hallo alle Mitleser,

@ Volker,
volkerS hat geschrieben:
Fr 16. Aug 2019, 20:01
ich löse meine Schaltungen mit Pic`s.
Das ist für mich glaube ich zumindest nicht durchführbar..... da fehlen mir die Kenntnisse und vermutlich auch ein Programmer
Klar hätte das den Vorteil das sich der E-Prom die Torstellungen merken kann.

Dennoch DANKE für den TIPP :gfm:

@ Franz-Peter,
ich dachte du bist im Urlaub :mrgreen: Dann ein Extra DANKE das du dir die Zeit nimmst :gfm:
MicroBahner hat geschrieben:
Sa 17. Aug 2019, 07:03
Zum einen darfst Du den Stepper nur starten wenn auch wirklich ein Befehl empfangen wurde. Also in dem if-Block mit der Abfrage auf einen erkannten Tastendruck
Da dachte ich das ich das so Programmiert habe :bigeek:
MicroBahner hat geschrieben:
Sa 17. Aug 2019, 07:03
wie reagiert deine FB auf längere Tastendrücke? Wenn sie da einen eigenen 'Wiederholcode' sendet ( den Du dann ja ignorierst ) ist alles ok.
Ja die sendet nach der ersten Zahlenreihe weitere immer gleiche die nicht berücksichtigt werden, also alles OK :D
MicroBahner hat geschrieben:
Sa 17. Aug 2019, 07:03
das Abschalten des enable solltest Du nicht über die Zeit machen.

An Pin 12 ist momentan der RST+SLP vom Treiber angeschlossen, deshalb die Pin Bezeichnung: T1Slp_PIN.... auf das ENable wollte ich warten bis das bei deinen MOBA TOOLS freigeschaltet wird...Im 1 Versuch habe ich das mit den delay Zeiten diese 1,7 ms Versucht da hatte ich auch 20ms eingetragen wollte aber 2 ms haben = Tippfehler von mir :shame: Mit den 20ms kam es aber zu keiner Bewegung des Motors...
Deshalb meine Frage ob da nicht geschweifte Klammern gesetzt werden müssen damit er nach der delay Zeit den Motor mit Stepps versorgt...??
Das nächste komische Verhalten war das am SlpPIN nur ganz kurz ein Signal vorhanden war, ich hatte mal eine LED dazu parallel angeschlossen.
Da dachte ich dass das Signal auf HIGH bleibt bis ein Neuer Befehl wieder LOW Schaltet...HMM komisch ist das schon...
MicroBahner hat geschrieben:
Sa 17. Aug 2019, 07:03
Du kannst abfragen, ob sich der Motor noch dreht
Wird da geprüft ob am Stepp PIN Signale ausgesendet werden ? Oder wie funktioniert das ?

Deinen Sketch werde ich mal ausprobieren, auch Ohne Arduino.h, und dann hier wieder Berichten.....
Ach ja : hätte ich doch fast vergessen:
Falls du schon in Urlaub bist, wünsche ich Dir eine schöne Zeit....

Und JA es war richtig Toll das sich mal was bewegt hat.....Dazu möchte ich nochmals Volker Danken!
Gruß Rainer

Benutzeravatar

Bodo
InterCityExpress (ICE)
Beiträge: 2285
Registriert: Do 28. Apr 2005, 08:59
Nenngröße: H0
Stromart: digital
Steuerung: IB1 & CS2
Gleise: C-Gleis
Kontaktdaten:
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#137

Beitrag von Bodo » Sa 17. Aug 2019, 10:47

Hallo,
ts250x hat geschrieben:
Sa 17. Aug 2019, 10:10
Klar hätte das den Vorteil das sich der E-Prom die Torstellungen merken kann.
Ist nun nicht so, dass der Arduino das nicht könnte ;-)
ts250x hat geschrieben:
Sa 17. Aug 2019, 10:10
Wird da geprüft ob am Stepp PIN Signale ausgesendet werden ? Oder wie funktioniert das ?
Wenn die Lib nicht wüsste, dass noch Steps fehlen, würde sie ja keine senden - das braucht nicht separat geprüft zu werden ;-). Eine Lib, die mit absoluten Positionen arbeiten kann, muss das "wissen".

Viele Grüße, Bodo
Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#138

Beitrag von ts250x » Sa 17. Aug 2019, 11:13

Hallo Bodo, Hallo Franz-Peter und Hallo an alle Mitleser,

@ Bodo, ich glaube bei Franz-Peters Moba-Tools ist da eine Einstellung mit set.Zero.
Falls du da einen anderen Vorschlag hast wie das Programmiert werden kann ....ich würde mich freuen das zu sehen :D

So nun noch ein kleiner Zwischenbericht zum Sketch.
Ich habe noch beim Öffnen die Abfrage eingebaut ... dann noch ein paar geschlossene Klammern gegen schließende Klammern getauscht......
Jetzt gibt der Compiler keine Fehlermeldung mehr aus.....
Zum Testen komme ich allerdings erst Heute Nachmittag....

Ich werde Berichten.... :D
Gruß Rainer

Benutzeravatar

Bodo
InterCityExpress (ICE)
Beiträge: 2285
Registriert: Do 28. Apr 2005, 08:59
Nenngröße: H0
Stromart: digital
Steuerung: IB1 & CS2
Gleise: C-Gleis
Kontaktdaten:
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#139

Beitrag von Bodo » Sa 17. Aug 2019, 11:52

Hallo,
ts250x hat geschrieben:
Sa 17. Aug 2019, 11:13
@ Bodo, ich glaube bei Franz-Peters Moba-Tools ist da eine Einstellung mit set.Zero.
Falls du da einen anderen Vorschlag hast wie das Programmiert werden kann ....ich würde mich freuen das zu sehen :D
set.Zero hat aber nichts mit dem EProm zu tun - set.zero setzt den Stepper-Nullpunkt während der Programmlaufzeit. Im EProm werden Werte gespeichert, die nach einem Neustart des Arduino wieder zur Verfügung stehen sollen. Eine Stepper-Position ins EProm zu schreiben, ist nur bedingt sinnvoll, da man den Motor im stromlosen Zustand verdrehen kann. Zum Speichern von CV-Werten von DCC-Dekodern ist es aber zum Beispiel sehr sinnvoll ;-). Darüber nachzudenken lohnt sich aber erst, wenn Deine Tore so funktionieren, wie sie sollen. Ich wollte nur darauf hinweisen, dass es (auch auf dem Arduino) geht …

Viele Grüße, Bodo
Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#140

Beitrag von ts250x » Sa 17. Aug 2019, 12:55

Hallo Bodo,Hallo @ All,
Bodo hat geschrieben:
Sa 17. Aug 2019, 11:52
Im EProm werden Werte gespeichert, die nach einem Neustart des Arduino wieder zur Verfügung stehen sollen
Das wäre doch Sinnvoll :gfm:
Bodo hat geschrieben:
Sa 17. Aug 2019, 11:52
Eine Stepper-Position ins EProm zu schreiben, ist nur bedingt sinnvoll, da man den Motor im stromlosen Zustand verdrehen kann.
Verdrehen wäre Theoretisch möglich Praktisch geht das nicht. Wegen der Spindel die ist so starr dass du da mit einem Werkzeug ran musst um da etwas zu verdrehen..
Bodo hat geschrieben:
Sa 17. Aug 2019, 11:52
Darüber nachzudenken lohnt sich aber erst, wenn Deine Tore so funktionieren, wie sie sollen.
Da hast Du meine Volle Zustimmung, aber wie schon zu Anfang geschrieben will ich nichts mit DCC Schalten .
Das soll bzw. MUSS absolut getrennt bleiben.. :D 8) 8)
Bodo hat geschrieben:
Sa 17. Aug 2019, 11:52
ch wollte nur darauf hinweisen, dass es (auch auf dem Arduino) geht …
Ja OK , verstanden.... Danke dafür :gfm:
Gruß Rainer

Benutzeravatar

Threadersteller
ts250x
InterRegio (IR)
Beiträge: 174
Registriert: Sa 11. Mär 2017, 16:10
Nenngröße: H0
Stromart: digital
Steuerung: MultiMaus Tablett
Gleise: Roco Geoline
Wohnort: Vorderpfalz
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#141

Beitrag von ts250x » Sa 17. Aug 2019, 16:41

Hallo@ All,
wie versprochen die Rückmeldung.
Es funktioniert nicht :bigeek:
Zur Kontrolle ob der Treiber Ein -Aus geschaltet wird habe ich eine LED mit angeschlossen.
Beim 1. Tasten druck der FB geht die LED an der Motor dreht sich mit Anfahrrampe und Endrampe aber die LED bleibt an sprich der Treiber wird nicht abgeschaltet und der Motor wird Heiß
Hier mal der Sketch:

Code: Alles auswählen

#include <MobaTools.h>
#include <IRremote.h>
Stepper4 T1Stepper(200, A4988);
int T1Slp_PIN = 12;
int RECV_PIN = 13;                          //Pin am Arduino Nano für den IR Receiver
IRrecv irrecv(RECV_PIN);                   //Objekt initialisieren für die IR Übertragung
decode_results results;

void setup()
{
  T1Stepper.attach( 10, 11 );   // Step und Dir-Pin
  T1Stepper.setSpeedSteps( 200, 50 );
  irrecv.enableIRIn();   //Dieser Befehl initialisiert den Infrarotempfänger.
  pinMode(T1Slp_PIN, OUTPUT);
  pinMode(RECV_PIN, INPUT);         //Den IR Pin als Eingang deklarieren.
  Serial.begin(9600);             //Serielle kommunikation mit 9600 Baud beginnen.
}

void loop()
{

  if (irrecv.decode(&results)) {
    Serial.println (results.value, DEC);
    if (results.value == 16724175) {          // wenn der Infrarot Empfänger die Zahl erkennt
      digitalWrite(12, HIGH);
      //digitalWrite(T1Slp_PIN, HIGH);
      //delay(20);
      T1Stepper.doSteps(300);                 //  Taste 1 macht 300 Schritte nach „rechts“
    }
    irrecv.resume(); {
      if (!T1Stepper.moving() ) {
        digitalWrite(12, LOW);
      }

      if (results.value == 16718055) {           // Taste 2
        digitalWrite(12, HIGH);
        // digitalWrite(T1Slp_PIN, HIGH);
        //delay(20);
        T1Stepper.doSteps(-300);                // macht 300 Schritte nach „links“
      }
      irrecv.resume(); {
        if (!T1Stepper.moving() ) {
          digitalWrite(12, LOW);
        }
      }
    }
  }
}


Die Vielen Klammern am Schluß waren Notwendig damit es keine Fehlermeldung gibt
Gruß Rainer


volkerS
InterCityExpress (ICE)
Beiträge: 2062
Registriert: Di 14. Okt 2014, 11:37
Nenngröße: H0
Stromart: AC
Steuerung: MS1/ MS2 /analog
Gleise: C-Gleis
Deutschland

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#142

Beitrag von volkerS » Sa 17. Aug 2019, 18:39

Hallo Rainer,
mit irrecv.resume(); wartet der Arduino doch auf die nächste Eingabe an der FB. Wieso steht der Befehl hinter dem Fahrbefehl des Steppers?
Dann kann doch nie
if (!T1Stepper.moving() ) {
digitalWrite(12, LOW);

ausgeführt werden.
Warum überhaupt if (!T1Stepper.moving() ) { ? Wenn diese Zeile abgearbeitet wird ist der Stepper doch mit seinen 300 Schritten längst fertig.
Volker

Benutzeravatar

MicroBahner
InterCityExpress (ICE)
Beiträge: 2332
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 69

Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB

#143

Beitrag von MicroBahner » Sa 17. Aug 2019, 20:14

Hallo Rainer,
die Klammern muss man schon gezielt und bewusst setzen. Die beeinflussen den Programmablauf sehr wesentlich. Und so wie ich das in meinem Vorschlag gesetzt habe, solltest Du das auch übernehmen. Es stimmt schon was Volker sagt, das irrecv.resume(); gehört nur einmal an das Ende des Blockes.
volkerS hat geschrieben:
Sa 17. Aug 2019, 18:39
Warum überhaupt if (!T1Stepper.moving() ) { ? Wenn diese Zeile abgearbeitet wird ist der Stepper doch mit seinen 300 Schritten längst fertig.
Nein, die doSteps Anweisung ist nicht blockierend. Der Sketch läuft sofort weiter - parallel zur Bewegung des Steppers. Deshalb darf die ' if (!T1Stepper.moving() )' Anweisung auch nicht innerhalb des FB-Blockes stehen, sondern muss bei jedem loop-Durchlauf ausgeführt werden. So kann sie immer prüfen, ob die Bewegung abgeschlossen ist, und dann den Ausgang abschalten.

Insofern sollte Rainer sich schon an die Struktur meines obigen Sketch-Vorschlages halten.

Antworten

Zurück zu „Elektrik und Elektronik“