Neuheiten 2021
Diskussionen zu den veröffentlichten Neuheiten finden sich im Forum Allgemeines (da sie in der Regel spurgrößenübergreifend sind), bzw. werden dahin verschoben. Bitte schaut zunächst hier nach, bevor ihr einen neuen Thread aufmacht, ob ihr dort nicht schon eine Diskussion zur Neuheitenveröffentlichung Eures Herstellers findet. Es macht keinen Sinn mehrere Threads zum gleichen Thema in zig Unterforen zu führen.
Die Diskussionsthreads zu den bereits veröffentlichten Neuheiten 2021 der am häufigsten diskutierten Hersteller:
Diskussionen zu den veröffentlichten Neuheiten finden sich im Forum Allgemeines (da sie in der Regel spurgrößenübergreifend sind), bzw. werden dahin verschoben. Bitte schaut zunächst hier nach, bevor ihr einen neuen Thread aufmacht, ob ihr dort nicht schon eine Diskussion zur Neuheitenveröffentlichung Eures Herstellers findet. Es macht keinen Sinn mehrere Threads zum gleichen Thema in zig Unterforen zu führen.
Die Diskussionsthreads zu den bereits veröffentlichten Neuheiten 2021 der am häufigsten diskutierten Hersteller:
Hilfe zu Arduino(UNO)Sketch gesucht für FB gefunden/ Danksagungen
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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
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
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Volker,
Versuchen kann ich das ja mal....
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
Aber soweit bin ich ja leider noch nicht
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....
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

Aber soweit bin ich ja leider noch nicht

Gruß Rainer bleibt gesund
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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
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
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Volker,
Sorry.............. das ich das in Frage gestellt habe
Du hast natürlich RECHT.
Nun werde ich den Nächsten Versuch angehen....
Danke das du dir die Zeit genommen hast mir zu Antworten
Sorry.............. das ich das in Frage gestellt habe

Du hast natürlich RECHT.
Nun werde ich den Nächsten Versuch angehen....
Danke das du dir die Zeit genommen hast mir zu Antworten

Gruß Rainer bleibt gesund
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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
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 bleibt gesund
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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....???
Hat jemand eine Idee wie das Programmiert werden muss ==??? 
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);
}
}

Gruß Rainer bleibt gesund
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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%.
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%.
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Volker,
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.
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.
Durch das Abschalten des Treibers wird der Motor nicht mehr warm... somit brauche ich den Strom nicht weiter zu begrenzen
Gruß Rainer bleibt gesund
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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
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
-
- Metropolitan (MET)
- Beiträge: 2614
- Registriert: Mi 28. Nov 2012, 14:24
- Nenngröße: H0
- Stromart: analog DC
- Steuerung: Microprozessor-Eigenbau
- Gleise: Tillig
- Wohnort: Mittelfranken
- Alter: 70
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Rainer,
erstmal schön, dass sich bei dir was dreht
.
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: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.
erstmal schön, dass sich bei dir was dreht

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);
}
}

P.S. Arduino.h musst Du nicht einbinden, das wird automatisch gemacht.
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Volker, Hallo Franz-Peter, Hallo alle Mitleser,
@ Volker,
Klar hätte das den Vorteil das sich der E-Prom die Torstellungen merken kann.
Dennoch DANKE für den TIPP
@ Franz-Peter,
ich dachte du bist im Urlaub
Dann ein Extra DANKE das du dir die Zeit nimmst
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
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...
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!
@ Volker,
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

@ Franz-Peter,
ich dachte du bist im Urlaub


Da dachte ich das ich das so Programmiert habeMicroBahner 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

Ja die sendet nach der ersten Zahlenreihe weitere immer gleiche die nicht berücksichtigt werden, also alles OKMicroBahner 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.

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

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...
Wird da geprüft ob am Stepp PIN Signale ausgesendet werden ? Oder wie funktioniert das ?MicroBahner hat geschrieben: ↑Sa 17. Aug 2019, 07:03 Du kannst abfragen, ob sich der Motor noch dreht
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 bleibt gesund
-
- InterCityExpress (ICE)
- Beiträge: 2369
- Registriert: Do 28. Apr 2005, 08:59
- Nenngröße: H0
- Stromart: digital
- Steuerung: IB1 & CS2
- Gleise: C-Gleis
- Kontaktdaten:
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo,

. Eine Lib, die mit absoluten Positionen arbeiten kann, muss das "wissen".
Viele Grüße, Bodo
Ist nun nicht so, dass der Arduino das nicht könnte

Wenn die Lib nicht wüsste, dass noch Steps fehlen, würde sie ja keine senden - das braucht nicht separat geprüft zu werden

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
Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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
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....
@ 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

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....

Gruß Rainer bleibt gesund
-
- InterCityExpress (ICE)
- Beiträge: 2369
- Registriert: Do 28. Apr 2005, 08:59
- Nenngröße: H0
- Stromart: digital
- Steuerung: IB1 & CS2
- Gleise: C-Gleis
- Kontaktdaten:
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo,
. 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
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

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
Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Bodo,Hallo @ All,
Das soll bzw. MUSS absolut getrennt bleiben..


Das wäre doch Sinnvoll

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..
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..



Ja OK , verstanden.... Danke dafür

Gruß Rainer bleibt gesund
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo@ All,
wie versprochen die Rückmeldung.
Es funktioniert nicht
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:
Die Vielen Klammern am Schluß waren Notwendig damit es keine Fehlermeldung gibt
wie versprochen die Rückmeldung.
Es funktioniert nicht

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 bleibt gesund
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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
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
-
- Metropolitan (MET)
- Beiträge: 2614
- Registriert: Mi 28. Nov 2012, 14:24
- Nenngröße: H0
- Stromart: analog DC
- Steuerung: Microprozessor-Eigenbau
- Gleise: Tillig
- Wohnort: Mittelfranken
- Alter: 70
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
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.
Insofern sollte Rainer sich schon an die Struktur meines obigen Sketch-Vorschlages halten.
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.
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.
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Franz-Peter, Hallo Volker,
Entschuldigt Bitte dass ich mich so spät melde, mein Rechner hat sich verabschiedet..... jetzt schreibe ich von dem Rechner meiner Frau..
Meine Erklärung für die beiden if (!T1Stepper.moving() )' abfragen war: das 1. Tor öffnet sich dann bleibt das für eine längere zeit offen.Deshalb soll der Treiber abgeschaltet werden..ich hoffe das einigermaßen verständlich ist um was es mir ging...
Da habe ich wohl einen Denkfehler....
Ich wünsche allen einen schönen Sonntag.
Jetzt werde ich mich mal weiter um meinen Rechner kümmern müssen..
Entschuldigt Bitte dass ich mich so spät melde, mein Rechner hat sich verabschiedet..... jetzt schreibe ich von dem Rechner meiner Frau..
Ja absolute Zustimmung von mir, ich schreibe es mal so: Denn sie wissen nicht was sie tun.... das trifft es wohl am besten...MicroBahner hat geschrieben: ↑Sa 17. Aug 2019, 20:14 die Klammern muss man schon gezielt und bewusst setzen.
OK, allerdings habe ich da ein Verständnis Problem: Wo fängt der BLOCK an und wo hört er auf.MicroBahner hat geschrieben: ↑Sa 17. Aug 2019, 20:14 Es stimmt schon was Volker sagt, das irrecv.resume(); gehört nur einmal an das Ende des Blockes.
Meine Erklärung für die beiden if (!T1Stepper.moving() )' abfragen war: das 1. Tor öffnet sich dann bleibt das für eine längere zeit offen.Deshalb soll der Treiber abgeschaltet werden..ich hoffe das einigermaßen verständlich ist um was es mir ging...
OK, aber wenn nur ein Tor einmal bewegt wird dann soll doch der Treiber ausgeschaltet werden... ich habe das so gelesen (den Sketch) dass erst abgeschaltet wird wenn beide Befehle (Tor auf und Tor zu) durchlaufen sind schaltet sich der Treiber ab......
Da habe ich wohl einen Denkfehler....
Ich wünsche allen einen schönen Sonntag.
Jetzt werde ich mich mal weiter um meinen Rechner kümmern müssen..
Gruß Rainer bleibt gesund
-
- Metropolitan (MET)
- Beiträge: 2614
- Registriert: Mi 28. Nov 2012, 14:24
- Nenngröße: H0
- Stromart: analog DC
- Steuerung: Microprozessor-Eigenbau
- Gleise: Tillig
- Wohnort: Mittelfranken
- Alter: 70
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Rainer,
. Das richtige Setzen der Klammern ist essentiell für das richtige Funktionieren des Programms. Der Compiler prüft nur, ob es zu einer öffnenden auch die passende schließende Klammer gibt. Ob das auch sinnvoll und so gewollt ist, kann er nicht feststellen.
).
Welche Klammern rein formal zusammengehören, kannst Du feststellen, wenn Du den Cursor unmittelbar vor oder hinter eine Klammer setzt. Dann wird die zugehörige Klammer mit einem Kästchen umrandet. Ob die dann an der logisch richtigen Stelle steht, sagt dir die IDE allerdings nicht ...
. Ich vermute mal, dein Denkfehler ist, das Du meinst das Programm bliebe da stehen, wenn es die Anweisung an den Stepper abgesetzt hat. Dem ist aber nicht so. Das Programm läuft einfach weiter.
Es wird dann sofort die if-Abfrage nach Taste 2 ausgeführt. Die schlägt aber fehl ( weil Du ja Taste 1 gedrückt hast ) und der Block ( für Taste 2 ) hinter dem if wird nicht ausgeführt. Dann erreichst Du das Ende des Blockes von der Abfrage ob überhaupt eine Taste erkannt wurde ( da muss dann das resume stehen ). Im weiteren Verlauf kreist der Prozessor dann immer im loop, und solange Du keine weitere Taste an der Fernbedienung drückst, wird der gesamte Block von 'if (irrecv.decode(&results)) {....}' übersprungen. Der Stepper bewegt sich da aber noch, während das Programm im Kreis läuft. Deshalb muss die Abfrage, ob der Motor noch läuft außerhalb dieses Blockes ( mit den Tastenabfragen ) gemacht werden - sonst kommt die Abfrage gar nicht mehr dran.
Hast Du dir mein Tutorial mal angeschaut? Du musst dir das so vorstellen, dass der Prozessor ständig von einer Anweisung zur nächsten hüpft. Wenn eine If-Anweisung abgearbeitet wird, und das Ergebnis ist 'false' dann wird der ganze folgende Block {...} übersprungen und mit der Anweisung danach weitergemacht. Erreicht er das Ende von loop() wird wieder von vorne begonnen. Und das geht immer ohne Pause so weiter. Nur wenn Du ein delay() einfügst, bleibt er an der Stelle tatsächlich für die angegebene Zeit stehen.
P.S. was macht dein Rechner, geht er wieder?
Das solltest Du dringend ändern

Da sind wir genau wieder bei unseren geschweiften Klammern. Der Block fängt bei der öffnenden an, und hört bei der zugehörigen schließenden auf. Natürlich musst Du von der Progrannlogik her festlegen, was ein Block ist und dementsprechend die Klammern setzen ( nicht andersherum

Welche Klammern rein formal zusammengehören, kannst Du feststellen, wenn Du den Cursor unmittelbar vor oder hinter eine Klammer setzt. Dann wird die zugehörige Klammer mit einem Kästchen umrandet. Ob die dann an der logisch richtigen Stelle steht, sagt dir die IDE allerdings nicht ...
Das ist schon klar...
Das mit dem Denkfehler ist wohl so ..

Es wird dann sofort die if-Abfrage nach Taste 2 ausgeführt. Die schlägt aber fehl ( weil Du ja Taste 1 gedrückt hast ) und der Block ( für Taste 2 ) hinter dem if wird nicht ausgeführt. Dann erreichst Du das Ende des Blockes von der Abfrage ob überhaupt eine Taste erkannt wurde ( da muss dann das resume stehen ). Im weiteren Verlauf kreist der Prozessor dann immer im loop, und solange Du keine weitere Taste an der Fernbedienung drückst, wird der gesamte Block von 'if (irrecv.decode(&results)) {....}' übersprungen. Der Stepper bewegt sich da aber noch, während das Programm im Kreis läuft. Deshalb muss die Abfrage, ob der Motor noch läuft außerhalb dieses Blockes ( mit den Tastenabfragen ) gemacht werden - sonst kommt die Abfrage gar nicht mehr dran.
Hast Du dir mein Tutorial mal angeschaut? Du musst dir das so vorstellen, dass der Prozessor ständig von einer Anweisung zur nächsten hüpft. Wenn eine If-Anweisung abgearbeitet wird, und das Ergebnis ist 'false' dann wird der ganze folgende Block {...} übersprungen und mit der Anweisung danach weitergemacht. Erreicht er das Ende von loop() wird wieder von vorne begonnen. Und das geht immer ohne Pause so weiter. Nur wenn Du ein delay() einfügst, bleibt er an der Stelle tatsächlich für die angegebene Zeit stehen.
P.S. was macht dein Rechner, geht er wieder?
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Franz-Peter, Hallo alle Mitleser,
Mein Rechner läuft wieder
Über den Grund des Ausfalls könnte ich viel schreiben, nur soviel,man sollte nach deinstallieren von Windows Updates unbedingt den Neustart durch führen!!
So nun geht es hier weiter:
Franz-Peter, ganz herzlichen Dank für deine Erklärungen
in der zwischen zeit habe ich auch meinen Gedankenfehler erkannt wegen der " if (!T1Stepper.moving() )" und deren Platzierung im Sketch..
die Tasten Kombination von STRG+t ist dann wirklich mein Freund....
Momentan habe ich noch nicht Deinen Sketch getestet. das wird wohl erst Morgen statt finden ..... ich werde berichten...
Dann hätte ich noch eine Frage an Dich, wieso fährt der Stepper mit 300 Stepps diese 8,5 mm ? Eigentlich dürfte der doch nur 1,5 Umdrehungen machen??
Mein Rechner läuft wieder

Über den Grund des Ausfalls könnte ich viel schreiben, nur soviel,man sollte nach deinstallieren von Windows Updates unbedingt den Neustart durch führen!!
So nun geht es hier weiter:

Franz-Peter, ganz herzlichen Dank für deine Erklärungen


in der zwischen zeit habe ich auch meinen Gedankenfehler erkannt wegen der " if (!T1Stepper.moving() )" und deren Platzierung im Sketch..
Wissen tue ich das, doch leider habe ich da so meine Fehlerhaften Gedanken wie das Programm abläuft.MicroBahner hat geschrieben: ↑Mo 19. Aug 2019, 16:34 Das richtige Setzen der Klammern ist essentiell für das richtige Funktionieren des Programms
Das habe ich auch schon festgestellt, auch wenn man an der Ersten Klammer neben der Zeilennummer das Symbol mit dem Mauszeiger anfährt werden die Striche zur dazugehörigen schleißenden Klammer angezeigt, deshalb habe ich dann die Vielen Schließenden Klammern gesetzt und!!MicroBahner hat geschrieben: ↑Mo 19. Aug 2019, 16:34 Welche Klammern rein formal zusammengehören, kannst Du feststellen, wenn Du den Cursor unmittelbar vor oder hinter eine Klammer setzt. Dann wird die zugehörige Klammer mit einem Kästchen umrandet.
die Tasten Kombination von STRG+t ist dann wirklich mein Freund....

Momentan habe ich noch nicht Deinen Sketch getestet. das wird wohl erst Morgen statt finden ..... ich werde berichten...
Dann hätte ich noch eine Frage an Dich, wieso fährt der Stepper mit 300 Stepps diese 8,5 mm ? Eigentlich dürfte der doch nur 1,5 Umdrehungen machen??
Gruß Rainer bleibt gesund
-
- Metropolitan (MET)
- Beiträge: 2614
- Registriert: Mi 28. Nov 2012, 14:24
- Nenngröße: H0
- Stromart: analog DC
- Steuerung: Microprozessor-Eigenbau
- Gleise: Tillig
- Wohnort: Mittelfranken
- Alter: 70
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Wo steht, dass der Stepper 200 Steps/Umdrehungen macht? Bei den Daten habe ich das nicht gelesen, und ich halte es für extrem unwahrscheinlich ( eher unmöglich

Wieviele Steps dein kleiner Stepper für eine Umdrehung benötigt, wirst Du ausprobieren müssen. Das dürfte wesentlich weniger sein.
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo Franz-Peter,
die 200 Stepps kommen daher dass der Motor pro Stepp sich um 1,8° dreht, was wohl die meisten Stepper tun.
Ich sollte noch erwähnen das ich bisher keine Micro-Stepps eingestellt habe = Läuft der Motor im Vollstepp Modus.
Soweit mein Glaube: ich habe eben nochmal die beiden Typen recherchiert...... ich glaube ich brauche eine Neue Brille... die Dinger machen Pro Stepp 18° das erklärt dann die 300 Stepps.
die 200 Stepps kommen daher dass der Motor pro Stepp sich um 1,8° dreht, was wohl die meisten Stepper tun.
Ich sollte noch erwähnen das ich bisher keine Micro-Stepps eingestellt habe = Läuft der Motor im Vollstepp Modus.
Soweit mein Glaube: ich habe eben nochmal die beiden Typen recherchiert...... ich glaube ich brauche eine Neue Brille... die Dinger machen Pro Stepp 18° das erklärt dann die 300 Stepps.

Gruß Rainer bleibt gesund
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo @ All,
Nun hat es mir doch keine Ruhe gelassen,der Sketch von Franz-Peter funktioniert
Per Versuch und Irrtum habe ich dann auch noch gelernt dass bei der Modifikation des Motors " T1Stepper.setSpeedSteps( 200, 50 );"
die "200" nicht für Stepps pro Umdrehung stehen sondern für die Geschwindigkeit mit der sich der Motor dreht...
Das einzigste was ich noch bemängeln muss: der Motor wird nach 2 Durchgängen direkt hintereinander sehr Warm.....
Das war bei den 20sec.delay nicht ...
Hat jemand eine
Idee ??
Nun hat es mir doch keine Ruhe gelassen,der Sketch von Franz-Peter funktioniert




Per Versuch und Irrtum habe ich dann auch noch gelernt dass bei der Modifikation des Motors " T1Stepper.setSpeedSteps( 200, 50 );"
die "200" nicht für Stepps pro Umdrehung stehen sondern für die Geschwindigkeit mit der sich der Motor dreht...
Das einzigste was ich noch bemängeln muss: der Motor wird nach 2 Durchgängen direkt hintereinander sehr Warm.....
Das war bei den 20sec.delay nicht ...
Hat jemand eine

Gruß Rainer bleibt gesund
-
- InterRegioExpress (IRE)
- Beiträge: 293
- Registriert: Sa 11. Mär 2017, 16:10
- Nenngröße: H0
- Stromart: digital
- Steuerung: MultiMaus Tablett
- Gleise: Roco-line o Bettung
- Wohnort: Vorderpfalz
- Alter: 61
Re: Hilfe zu Arduino(UNO)Sketch gesucht für FB
Hallo an Alle ,
vielleicht noch interessierten.
Nun habe ich den Sketch mal auf die 3 Tore + 3 Stände für LED`s erweitert.
Ich hoffe das ich die "Blöcke" Richtig eingeteilt habe
Es wäre Nett wenn sich das mal ein Experte anschauen- antun würde 
vielleicht noch interessierten.
Nun habe ich den Sketch mal auf die 3 Tore + 3 Stände für LED`s erweitert.
Ich hoffe das ich die "Blöcke" Richtig eingeteilt habe



Code: Alles auswählen
#include <MobaTools.h>
#include <IRremote.h>
Stepper4 T1Stepper(200, A4988);
Stepper4 T2Stepper(200, A4988);
Stepper4 T3Stepper(200, A4988);
int T1Slp_PIN = 12;
int T2Slp_PIN = 9;
int T3Slp_PIN = 6;
int T1Led_PIN = 3;
int T2Led_PIN = 2;
int T3Led_PIN = 1;
int RECV_PIN = 13; //Pin am Arduino UNO 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 );
T2Stepper.attach( 7, 8 ); // Step und Dir-Pin
T2Stepper.setSpeedSteps( 200, 50 );
T3Stepper.attach( 4, 5 ); // Step und Dir-Pin
T3Stepper.setSpeedSteps( 200, 50 );
irrecv.enableIRIn(); //Dieser Befehl initialisiert den Infrarotempfänger.
pinMode(T1Slp_PIN, OUTPUT); // Treiber 1 EIN-Ausschalten
pinMode(T2Slp_PIN, OUTPUT); // Treiber 2 Ein-Ausschalten
pinMode(T3Slp_PIN, OUTPUT); // Treiber 3 Ein-Ausschalten
pinMode(3, OUTPUT); // LED`s Stand 1
pinMode(2, OUTPUT); // LED`s Stand 2
pinMode(1, OUTPUT); // LED`s Stand 3
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 der Taste 1 erkennt
digitalWrite(T1Slp_PIN, HIGH);
T1Stepper.doSteps(300); // Taste 1 macht 300 Schritte nach „rechts“
}
if (results.value == 16718055) { // Taste 2
digitalWrite(T1Slp_PIN, HIGH);
T1Stepper.doSteps(-300); // macht 300 Schritte nach „links“
}
irrecv.resume();
if (!T1Stepper.moving() ) {
digitalWrite(T1Slp_PIN, LOW);
}
if (results.value == 16716015) { // Taste 4
digitalWrite(T2Slp_PIN, HIGH);
T2Stepper.doSteps(300); // Taste 4
}
if (results.value == 16726215) { // Taste 5
digitalWrite(T2Slp_PIN, HIGH);
T2Stepper.doSteps(-300); // Taste 5
}
irrecv.resume();
}
if (!T2Stepper.moving() ) {
digitalWrite(T2Slp_PIN, LOW);
}
if (results.value == 167288765) { // Taste 7
digitalWrite(T3Slp_PIN, HIGH);
T3Stepper.doSteps(300); // Taste 7
}
if (results.value == 16730805) { // Taste 8
digitalWrite(T3Slp_PIN, HIGH);
T3Stepper.doSteps(-300); // Taste 8
}
irrecv.resume();
if (!T3Stepper.moving() ) {
digitalWrite(T3Slp_PIN, LOW);
}
if (results.value == 16756815) { // Taste 3
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(250);
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(300);
digitalWrite(3, HIGH);
delay(750);
digitalWrite(3, LOW);
delay(500);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(300);
digitalWrite(3, HIGH);
}
if (results.value == 16734885) { // Taste 6
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(250);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(300);
digitalWrite(2, HIGH);
delay(750);
digitalWrite(2, LOW);
delay(500);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(300);
digitalWrite(2, HIGH);
}
if (results.value == 16732845) { // Taste 9
digitalWrite(1, HIGH);
delay(500);
digitalWrite(1, LOW);
delay(250);
digitalWrite(1, HIGH);
delay(500);
digitalWrite(1, LOW);
delay(300);
digitalWrite(1, HIGH);
delay(750);
digitalWrite(1, LOW);
delay(500);
digitalWrite(1, HIGH);
delay(1000);
digitalWrite(1, LOW);
delay(300);
digitalWrite(1, HIGH);
}
if (results.value == 16738455) { // Taste 0 = Stand 3 Licht Aus
digitalWrite(1, LOW);
}
if (results.value == 16750695) { // Taste +100 = Stand 2 Licht Aus
digitalWrite(2, LOW);
}
if (results.value == 16756815) { // Taste +200 = Stand 1 Licht Aus
digitalWrite(3, LOW);
}
}

Gruß Rainer bleibt gesund