RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#176 von patrick5678 , 04.06.2017 09:53

Hallo Franz-Peter,

ich möchte nur kurz danke sagen für dein großartiges Projekt. Ich habe heute morgen ein wenig gebastelt und bin ganz erstaunt wie wunderbar alles geklappt hat. Auf dem Steckboard mit meiner ESU ECoS zu vielen schönen Signalbildern.

Version 1: 3-begriffiges Lichtsignal (HP0, HP1, HP2) an A0, A1, A2

[youtu-be]https://youtu.be/zTH_5J1wYvk[/youtu-be]

1
2
3
4
5
6
7
8
9
10
 
const byte iniTyp[]     =   { FSIGNAL2, FSIGNAL0};
const byte out1Pins[] = { A0, NC}; // output-pins der Funktionen
const byte out2Pins[] = { A1, NC};
const byte out3Pins[] = { A2, NC};
 
const byte iniFmode[] = { 0b000000, 0b000100};
const byte iniPar1[] = { 0b000001, 0b000001};
const byte iniPar2[] = { 0b000010, 0b000110};
const byte iniPar3[] = { 200, 0};
const byte iniPar4[] = { 0b000101, 0}; // nur für Lichtsignale!
 




Version 2: Ausfahrtsignal 4-begriffig (HP00, HP01, HP02, Sh1/Hp0) an Pin 5-9

[youtu-be]https://youtu.be/3HjZGTUSNzs[/youtu-be]

1
2
3
4
5
6
7
8
9
10
11
12
 
const byte iniTyp[]     =   { FSIGNAL2, FSIGNAL0};
 
const byte out1Pins[] = { 5, 8}; // output-pins der Funktionen
const byte out2Pins[] = { 6, 9};
const byte out3Pins[] = { 7, NC};
 
const byte iniFmode[] = { 0b000000, 0b000100};
const byte iniPar1[] = { 0b001001, 0b110001};
const byte iniPar2[] = { 0b100010, 0b100110};
const byte iniPar3[] = { 200, 0};
const byte iniPar4[] = { 0b000101, 0}; // nur für Lichtsignale!
 
 



Beste Grüße ins wunderschöne Mittelfranken,
Patrick


Teppichbahn in DB Epoche III - Aufbau Mai 2017 jetzt mit ESU ECoS 2.1 - Letzte Änderung: 31.5.2017


patrick5678  
patrick5678
InterRegio (IR)
Beiträge: 153
Registriert am: 15.08.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#177 von patrick5678 , 04.06.2017 20:07

Einen schönen guten Abend,

ich habe noch etwas gebastelt und beide Signale zusammen mit einem Arduino verbunden. Funktioniert sehr gut.
Signal 1: Adresse 17+18, Signal 2: Adresse 19+20

An Adresse 21 und 22 möchte ich zwei Relais anschliessen um ggf. meine Schiebebühne zu steuern.
Relais 1 (Adresse 21, Pin 10) soll nur einen kurzen Schaltimpuls geben während Relais 2 (Adresse 22, Pin 11) die Fahrrichtung umschaltet.

Es gelingt mir Relais 22 umzuschalten, aber Relais 1 reagiert nur auf Umschalten, nicht aber auf einen Schaltimpuls. Auch nicht mit FCOIL.

Ich benutzte Version 4.0.3.

1
2
3
4
5
6
7
8
9
10
11
 

const byte iniTyp[] = { FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0, FSTATIC, FSTATIC};
const byte out1Pins[] = { 5, 8, A0, NC, 10, 11}; // output-pins der Funktionen
const byte out2Pins[] = { 6, 9, A1, NC, NC, NC};
const byte out3Pins[] = { 7, NC, A2, NC, NC, NC};
 
const byte iniFmode[] = { 0b000000, 0b000100, 0b000000, 0b000100, 0, 0};
const byte iniPar1[] = { 0b001001, 0b110001, 0b000001, 0b000001, 0, 0};
const byte iniPar2[] = { 0b100010, 0b100110, 0b000010, 0b000110, 0, 0};
const byte iniPar3[] = { 200, 0, 200, 0, 0, 0};
const byte iniPar4[] = { 0b000101, 0, 0b000101, 0, 0, 0}; // nur für Lichtsignale!
 



Herzlichen Dank für einen Tip was ich übersehe.

Beste Grüße,
Patrick


Teppichbahn in DB Epoche III - Aufbau Mai 2017 jetzt mit ESU ECoS 2.1 - Letzte Änderung: 31.5.2017


patrick5678  
patrick5678
InterRegio (IR)
Beiträge: 153
Registriert am: 15.08.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#178 von MicroBahner , 04.06.2017 21:56

Hallo Patrick,
wie soll denn der Schaltimpuls erzeugt werden ? ( von der Zentrale her - d.h. was sendet die Zentrale )
FSTATIC erzeugt gar keine Impulse, da müsste die Zentrale den Impuls erzeugen, indem sie den Ausgang umschaltet.
Mit FCOIL wird schon ein Impuls erzeugt, bei iniPar1 muss aber auch die Länge des Impulses angegeben werden. Allerdings merkt sich der Decoder die Weichenlage, und erzeugt den Impuls erst wieder, wenn die Weiche tatsächlich umgeschaltet wurde. Wird immer der gleiche Befehl gesendet, so wird nur einmal ein Impuls erzeugt, und dann nie wieder.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#179 von MicroBahner , 05.06.2017 11:07

Zitat

Ich habe das Konfigurationsfile entsprechend angepasst (Anhang), ich stelle mir nur die Frage, ob es damit getan ist?!
...

Zitat

Der PB3 für den Servo hat bei mir nicht funktioniert. PB3 gehört zum JTAG-Interface, was scheinbar immer aktiv ist. Da müsste man mal schauen, wie man das deaktiviert.


Hallo Jürgen,
inzwischen habe ich auch herausbekommen wie man das JTAG-Interface deaktiviert. Wenn man den STM32duino bootlader verwendet, wird dies automatisch gemacht. In allen anderen Fällen muss dies mit dem Befehl disableDebugPorts(); im Sketch erledigt werden. Da werde ich dann eine neue Version für erstellen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#180 von juergiboy , 06.06.2017 17:47

Hallo Franz-Peter,

erstmal vielen Dank für die ausführlichen Antworten und die Tests.

Um näher an der Arduino-Welt zu bleiben, habe ich mir dann mal ein paar von den Maple-Clones bestellt.

Zitat
Und PA8/PA9 sind meines Wissens keine Analogeingänge.


Stimmt, keine Ahnung was ich mir dabei gedacht habe....

Zitat
Ich gehe mal davon aus, dass Du auch diesen Arduino-Core für den STM32 verwendest. Da ist dann auch noch ein Fehler drin, der u.U. dazu führt, dass die MoBaTools nicht mehr funktionieren. Den habe ich aber schon gemeldet.


Genau den verwende ich (gibt es überhaupt einen anderen?) - was ist denn genau der Fehler? Betrifft das die Servos oder die LEDs?

Zitat
Die Programmierung über die serielle Schnittstelle hat übrigens 'Nebenwirkungen': Der dabei verwendete integrierte Bootlader löscht vor dem Programmieren den gesamten Flash. Da auch das EEPROM im Flash simuliert wird, werden bei jedem Programmieren auch alle CV-Werte gelöscht.


Das ist natürlich nicht so schön, sollte aber bei Signalen ja nicht so relevant sein.

Aber dazu habe ich dann gleich eine neue Frage: natürlich habe ich auch mit dem STM32duino Bootloader experimentiert, das hat auch zeitweise geklappt - und dann wieder nicht...
Ich habe auch schon den bekannten 10K Widerstand gegen einen 1,5K getauscht (man ist der klein), trotzdem tut sich mein Windows schwer mit dem Erkennen des USB - und vor allem mit dem Halten einer stabilen Verbindung.
Ich habe schon soviel gelernt, dass der Serial-Bootloader nicht gelöscht werden kann. Das gilt natürlich nicht für den USB-Loader, und wenn ich jetzt deinen Kommentar lese, klingt das so, als würde alles (auch der USB-Loader) beim flashen über Serial wieder gelöscht!? Das würde einige Fragen bei mir klären...

Ich werde fleißig weiter experimentieren, und da ich gerade Signale auf meine Anlage bringen will, noch mal ein dickes Lob für den Decoder!


Gruß
Jürgen


juergiboy  
juergiboy
Regionalbahn (RB)
Beiträge: 44
Registriert am: 08.02.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#181 von MicroBahner , 06.06.2017 22:08

Hall Jürgen,

Zitat

was ist denn genau der Fehler? Betrifft das die Servos oder die LEDs?

Ich verwende in den MobaTools die Compare-Register 1+2 des Timers 4. Da setze ich die Compare-Interrupts ein. Diese Compare-Register lassen sich auch verwenden, um ein HW-PWM Signal an den Ausgängen PB6 (Channel1) und PB7 (Channel2) zu erzeugen. Wird nun an einem von diesen beiden Ports der Mode z.B. auf OUTPUT gestellt, so wird die Ausgabe der PWM-Signale an diesen Ports abgeschaltet (Auch wenn sie vorher nie aktiviert war). Leider wird dabei derzeit nicht nur die interne Verbindung der Compare-Register zu den Ports gekappt, sondern auch der entsprechende Interrupt abgeschaltet. D.h, mit pinMode( PB6, .. ) funktionieren die Servos nicht mehr, mit pinMode(PB7, .. ) die Leds. Die notwendigen Änderungen habe ich bereits in GitHub an RogerClark gemeldet, und grundsätzlich ist das auch akzeptiert. Eingebaut ist es aber noch nicht.

Zitat

Ich habe auch schon den bekannten 10K Widerstand gegen einen 1,5K getauscht (man ist der klein), trotzdem tut sich mein Windows schwer mit dem Erkennen des USB - und vor allem mit dem Halten einer stabilen Verbindung.

Auf den generischen Modulen habe ich noch nicht mit dem STMduino Bootlader gearbeitet. Da habe ich die Schnittstelle bisher nur für den seriellen Monitor genutzt, was stabil funktioniert hat. Die Maple Mini sind da auch besser, die haben eine aufwändigere Schaltung um einen USB-Reset zu erzeugen. Die haben auch einen leistungsfähigeren 3,3V-Regler ( bei den generischen Boards ist mir da schon einer abgeraucht, was über USB dann 5V am Prozessor bedeutet hat. Er hat's aber überlebt ).

Zitat

Ich habe schon soviel gelernt, dass der Serial-Bootloader nicht gelöscht werden kann.

Ja, der ist im ROM fest eingebrannt.

Zitat

wenn ich jetzt deinen Kommentar lese, klingt das so, als würde alles (auch der USB-Loader) beim flashen über Serial wieder gelöscht!?

So ist es!


Und Danke für's Lob, es freut mich ja, wenn's einer auch einsetzen kann


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#182 von patrick5678 , 07.06.2017 06:50

Vielen Dank für deine guten Fragen, Franz-Peter. Jetzt verstehe ich das besser.

Zitat von MicroBahner im Beitrag Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

wie soll denn der Schaltimpuls erzeugt werden ? ( von der Zentrale her - d.h. was sendet die Zentrale )
FSTATIC erzeugt gar keine Impulse, da müsste die Zentrale den Impuls erzeugen, indem sie den Ausgang umschaltet.



Adresse 121 habe ich als Umschalten in der Zentrale angelegt.



Adresse 122 habe ich als Impuls in der Zentrale angelegt.



Die Zentrale gibt dann für Acc 121 Umschalten jeweils einen On/Off-Befehl für Output 1 und Output 0 aus.

Für Acc 122 Impuls gibt es aber nur einen On/Off-Befehl an einen Output (rot=1). D.h. das Problem ist, dass der Decoder dann keinen Befehl erhält in die Grundstellung zurückzufallen - und auch nicht von selber zurückfällt.



Zitat von MicroBahner im Beitrag Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

Mit FCOIL wird schon ein Impuls erzeugt, bei iniPar1 muss aber auch die Länge des Impulses angegeben werden. Allerdings merkt sich der Decoder die Weichenlage, und erzeugt den Impuls erst wieder, wenn die Weiche tatsächlich umgeschaltet wurde. Wird immer der gleiche Befehl gesendet, so wird nur einmal ein Impuls erzeugt, und dann nie wieder.



Das erklärt das Verhalten, was ich beobachtet habe. Wenn aber die Weiche von Hand geschaltet wurde, sind Decoder und aktuelle Weichenlage nicht mehr synchron. Meine WeichEi-Decoder "merken" sich die aktuelle Weichenlage nicht und iTrain bietet eine Funktion beim Start alle Weichen einmal durchzuschalten um sicherzustellen, dass Weichenlage und iTrain synchron sind. Da währe dieses Feature dann eher hinderlich. Durch anderen iniPar CV kann man ein Durchbrennen ja gut vermeiden.

Ansonsten funktioniert alles super und ich habe jetzt auch verstanden, wie ich einen k84 Decoder nachbilde.

Beste Grüße,
Patrick


Teppichbahn in DB Epoche III - Aufbau Mai 2017 jetzt mit ESU ECoS 2.1 - Letzte Änderung: 31.5.2017


patrick5678  
patrick5678
InterRegio (IR)
Beiträge: 153
Registriert am: 15.08.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#183 von MicroBahner , 07.06.2017 09:58

Hallo Patrick,
interessant, dass manchmal auch Fragen und nicht nur Antworten zur Klärung beitragen können

Danke für deine Erläuterung zu den Einstellmöglichkeiten in der Zentrale. Da ich ja keine solche Zentrale besitze ( ich habe nur eine MS2 und eine Roco Maus ) ist das für mich sehr interessant.

Aufgrund der Erkenntnisse für den STM32 bei Jürgen oben, werde ich ja sowieso nochmal eine Version erstellen. Da werde ich dann gleich mal schauen, wie ich das so erweitere, dass auch die Einstellmöglichkeiten der ECOS mit dem Decoder sinnvoll nutzbar sind. Auf jeden Fall sollte man bei FCOIL einstellbar machen, dass er auch auf den Befehl reagiert, wenn die Weiche bereits in der jeweiligen Stellung liegt. Das könnte gegebenenfalls auch für Servos sinnvoll sein, obwohl man da ja nicht so ohne weiteres von Hand umschalten kann.
Was immer schonmal geplant war, ist den Ausgang nicht automatisch abzuschalten, sondern das Abschalten nur aufgrund des entsprechenden DCC-Befehls zu machen. Ist zwar für eine Weichenspule 'gefährlich', könnte aber in anderen Anwendung dann doch sinnvoll sein.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#184 von MicroBahner , 08.06.2017 15:35

Hallo Patrick,
inzwischen habe ich den Zubehördecoder bei der FCOIL-Funktion etwas erweitert. Man kann nun den Spulenausgang auch über die DCC-Befehle abschalten. Ausserdem können immer wieder Pulse am gleichen Ausgang erzeugt werden, ohne das umgeschaltet wird. Vielleicht kannst Du mal testen, ob das jetzt so mit deiner Zentrale vernünftig zusammenspielt. Die aktuelle Entwicklungsversion kannst Du hier herunterladen.

Die Doku ist noch nicht angepasst. Das sind die Erweiterungen:
Es gibt ein neues Flag für iniFmode: NOPOSCHK. Ist dieses Flag gesetzt, so wird die Position nicht überprüft, und es kann auch immer wieder ein Impuls am gleichen Ausgang erzeugt werden.
Abschaltung per DCC-Befehl: Ist das Flag CAUTOOFF gesetzt, verhält es sich wie bisher. D.h. das Ausschalten wird automatisch entsprechend der in iniPar1 eingestellten Zeit gemacht. Ist das Flag nicht gesetzt, so reagiert der Ausgang auch auf den DCC-Abschaltbefehl ( das erste Ereignis, Zeit oder DCC, schaltet den Ausgang ab ). Die Zeit kann deaktiviert werden, indem iniPar1 auf 0 gesetzt wird. Dann wird nur über den DCC-Befehl abgeschaltet.
Inipar2 definiert wie bisher die Mindestpause zwischen 2 Pulsen um die Spule zu schonen. Bei Bedarf kann aber auch das auf 0 gesetzt werden.
Beide Flags können auch gleichzeitig gesetzt sein: NOPOSCHK|CAUTOOFF
NOPOSCHK=8 (Bit3) , CAUTOOFF=1 (Bit0)
3 Beispiele:

So reagieren die Ausgänge ausschliesslich auf DCC-Befehle, und es können auch wiederholt Pulse am selben Ausgang erzeugt werden:

1
2
3
4
5
6
7
8
9
10
11
 
const byte iniTyp[]     =   {      FCOIL };
const byte out1Pins[] = { 7 };
const byte out2Pins[] = { 8 };
const byte out3Pins[] = { NC };

const byte iniFmode[] = { NOPOSCHK };
const byte iniPar1[] = { 0 };
const byte iniPar2[] = { 0 };
const byte iniPar3[] = { 0 };
const byte iniPar4[] = { 0 };
 
 



Das ist das Verhalten wie bisher:

1
2
3
4
5
6
 
const byte iniFmode[]     = {  CAUTOOFF };
const byte iniPar1[] = { 50 }; // Pulslänge 500ms
const byte iniPar2[] = { 50 }; // minimale Pulspause 500ms
const byte iniPar3[] = { 0 };
const byte iniPar4[] = { 0 };
 
 




Abschaltung per DCC, aber maximale Pulslänge 2sec:

1
2
3
4
5
6
 
const byte iniFmode[]     = {  NOPOSCHK };
const byte iniPar1[] = { 200 }; // maximale Pulslänge 2s
const byte iniPar2[] = { 50 }; // minimale Pulspause 500ms
const byte iniPar3[] = { 0 };
const byte iniPar4[] = { 0 };
 
 


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#185 von patrick5678 , 10.06.2017 07:51

Hallo Franz-Peter,

vielen Dank für diese neuen sehr praktischen Erweiterungen. Ich habe sie soeben kurz ausprobiert bevor ich eine Woche wegfahre.

Funktioniert tadellos! Genau was ich gesucht habe!

An PIN 11 habe ich eine LED und ein Relais anschlossen und in der Zentrale einen Impulsschalter definiert.

Mit

1
2
3
4
5
6
7
8
9
10
 
const byte iniTyp[]     =   {    FCOIL };
const byte out1Pins[] = { 11};
const byte out2Pins[] = { NC};
const byte out3Pins[] = { NC};

const byte iniFmode[] = { NOPOSCHK };
const byte iniPar1[] = { 0 };
const byte iniPar2[] = { 0 };
const byte iniPar3[] = { 0 };
const byte iniPar4[] = { 0 };
 



leuchtet die LED/ zieht das Relais genau so lange wie ich den Impulsschalter drücke.

Mit

1
2
3
 
const byte iniFmode[]     = {  NOPOSCHK };
const byte iniPar1[] = { 50 };
const byte iniPar2[] = { 200 };
 



zieht das Relais für 500ms an und fällt dann für 2 Sekunden ab - ehe es wieder anzieht wenn ich den Taster gedrückt halte.

Also: ein voller Erfolg und eine sehr praktische Erweiterung. Einen Weichentest führe ich die Tage gerne noch durch.

Vielen, vielen Dank und ein sonniges Wochenende wünschend,
Patrick


Teppichbahn in DB Epoche III - Aufbau Mai 2017 jetzt mit ESU ECoS 2.1 - Letzte Änderung: 31.5.2017


patrick5678  
patrick5678
InterRegio (IR)
Beiträge: 153
Registriert am: 15.08.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#186 von juergiboy , 12.06.2017 17:10

Hallo Franz-Peter,

ich habe da noch eine Frage bzw. Anregung.

Ich habe gerade meinen Lokschuppen mit einem Servo zur Betätigung der Türen ausgestattet. Da die Servos beim Einschalten bekanntlich (mehr oder weniger) springen, sieht es natürlich doof aus, wenn die Türen halb offen stehen.

Daher meine Frage, ob es nicht möglich wäre die letzte Position der Servos zu speichern und nach dem Einschalten bzw. Reset (in einer Art Init-Lauf) wieder anzusteuern?


Gruß
Jürgen


juergiboy  
juergiboy
Regionalbahn (RB)
Beiträge: 44
Registriert am: 08.02.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#187 von MicroBahner , 12.06.2017 22:16

Zitat

Daher meine Frage, ob es nicht möglich wäre die letzte Position der Servos zu speichern und nach dem Einschalten bzw. Reset (in einer Art Init-Lauf) wieder anzusteuern?

Das sollte eigentlich so sein....


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#188 von Detsimbo , 15.06.2017 20:01

Hallo
Ich habe es tatsächlich geschafft mir eine Platine zu löten ops: die auch funktioniert, bin begeistert...
Alle 5 Signale lassen sich wunderbar ansteuern!
Im Manual steht das sich der Decoder das letzte Signal nicht merkt und daher beim "Neustart" auf 0 startet, was(wenn ich das richtig verstanden habe) rote Led leuchtet, bedeutet.
Gibt es eine Möglichkeit das der Decoder sich das letzte Signal merken kann? Also wenn ich ihn vom Strom nehme und wieder mit Strom versorge mir das letzte Signal anzeigt?
Vielleicht funktioniert sowas ja ähnlich wie bei einem Pc mit einer kleinen Batterie die quasi dafür sorg das das Bios nicht "gelöscht" wird. Ich weiss es nicht, nur so eine Idee?...


Grüße Detlef


 
Detsimbo
RegionalExpress (RE)
Beiträge: 94
Registriert am: 17.12.2016
Ort: Schwarzwald
Gleise Roco Geoline
Spurweite H0
Steuerung Traincontroller 9 Gold
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#189 von Lokfuehrer ( gelöscht ) , 15.06.2017 21:23

Ja das funktioniert.
Dafür muss man die letzte Stellung in den EEPROM Schreiben, ein nicht flüchtiger Speicher. Dieser kann aber nur bregrenzt beschrieben werden.
Gruß

Gesendet von meinem Redmi 3S mit Tapatalk


Lokfuehrer

RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#190 von Detsimbo , 15.06.2017 22:00

Zitat

Ja das funktioniert.
Dafür muss man die letzte Stellung in den EEPROM Schreiben, ein nicht flüchtiger Speicher. Dieser kann aber nur bregrenzt beschrieben werden.



Danke für die Antwort und wie genau mache ich das?


Grüße Detlef


 
Detsimbo
RegionalExpress (RE)
Beiträge: 94
Registriert am: 17.12.2016
Ort: Schwarzwald
Gleise Roco Geoline
Spurweite H0
Steuerung Traincontroller 9 Gold
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#191 von Lokfuehrer ( gelöscht ) , 15.06.2017 22:11

Hallo,
Hier ein schönes Tutorial:
http://fluuux.de/2013/04/daten-im-eeprom...ablen-zuweisen/

Außerdem hier einmal das ganze wenn der Strom Weg ist (dann geht der EEPROM net so schnell kaputt)

https://www.mikrocontroller.net/topic/216141

Gruß

Gesendet von meinem Redmi 3S mit Tapatalk


Lokfuehrer

RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#192 von juergiboy , 16.06.2017 12:11

Hallo,

nachdem ich die Probier- und Testphase nun verlassen habe, konfiguriere ich aktuell meinen ersten NANO, der dann auf meiner Anlage werkeln soll.

Es will mir aber noch nicht gelingen ein Haupt- und das zugehörige Vorsignal zusammen zu schalten. So sieht aktuell meine Konfiguration aus:

1
2
3
4
5
6
7
8
9
10
 
const byte iniTyp[]     =   {   FSERVO, FSTATIC, FSIGNAL2, FSIGNAL0,  FVORSIG,  FSIGNAL0 };
const byte out1Pins[] = { 1, 0, 5, 8, 9, 11 };
const byte out2Pins[] = { NC, NC, 6, NC, 10, 12 };
const byte out3Pins[] = { NC, NC, 7, NC, NC, NC };

const byte iniFmode[] = { SAUTOOFF, 0, 0, 0, 0, 0 };
const byte iniPar1[] = { 0, 0, 0b000001, 0b000110, 0b00101, 0b01001 };
const byte iniPar2[] = { 75, 0, 0b000010, 0b000000, 0b01010, 255 };
const byte iniPar3[] = { 8, 0, 0, 0, 22, 0 };
const byte iniPar4[] = { 0, 0, 0, 0, 0, 0 };
 



Der Decoder hat als Startadresse die 20 bekommen, somit hat das Signal die erste Adresse 22 (so stehts dann auch im SerialMonitor).
Also habe ich diese Adresse beim Vorsignal bei iniPar3 eingetragen - aber das rührt sich dann lediglich bei seinen eigenen (24/25) Adressen...

Habe ich da noch etwas übersehen? Oder falsch verstanden?


Gruß
Jürgen


juergiboy  
juergiboy
Regionalbahn (RB)
Beiträge: 44
Registriert am: 08.02.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#193 von Detsimbo , 16.06.2017 14:15

Hallo juergiboy,

Bei mir sieht das in der h. Datei alles etwas anders aus, bist Du sicher das Du die richtige nimmst? bei mir sieht das so aus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
 
/* Universeller DCC - Zubehördecoder
**************************************************************************************************
* Beispieldatei für L i c h t h a u p t s i g n a l e (ohne Vorsignale am gleichen Mast).
* Die Pins sind für den Arduino Nano ausgelegt.
* Es können 3- oder 5-begriffige Hauptsignale angesteuert werden. Die Anzahl der
* Ansteuerbaren Signale hängt von der Zahl der Led's ab:
* Ohne Zugbeeinflussungsrelais können 6 3-Begriffige (3 Leds) oder 3 4-begriffige Signale ( 5/6 Leds) angesteuert werden
* Es müssen nur gegebenenfalls die PinZuordnungen angepasst werden. Alle anderen Paramter können
* unverändert bleiben.
* Die Leds werden aktiv HIGH angesteuert. Für 16V ausgelegte Lichtsignale müssen über einen invertierenden
* ULN2803 (o.ä.) angesteuert werden
* Beim Lichtsignaldecoder ist kein Rückkanal für das Auslesen der CV-Werte vorgesehen
**************************************************************************************************
*
*
* Eigenschaften:
* Bis zu 8 (aufeinanderfolgende) Zubehöradressen ansteuerbar. Je nach verfügbaren Digitalausgängen
* sind ggfs auch mehr möglich.
* 1. Adresse per Programmierung einstellbar
*
* Das Verhalten der konfigurierten Funktionen wird über CV-Programmierung festgelegt:
* Bei Servoausgängen die Endlagen und die Geschwindigkeit
* bei Doppelspulenantrieben die Einschaltzeit der Spulen.
* bei blinkenden Ausgängen das Blinkverhalten ( in V3.0 noch nicht realisiert )
*
* Aufteilung der CV's:
* CV Bedeutung
* 47 Kennung für Erstinitiierung, allgemeine Optionen die für den gesamten Decoder gelten
* 48/49 Pom-Adresse
* 50-54 Parameter für 1. Weichenadresse
* 55-59 Parameter für 2. Weichenadresse
* ...
* Bedeutung der CV's bei den verschiedenen Funktione (CV-Nummern für 1. Weichenadresse)
* FSIGNAL2 Lichtsignalfunktion mit 1..3 Weichenadressen
* bei den Folgeadressen ist als Typ FSIGNAL0 einzutragen
* Lichtsignale starten beim Einschalten immer im Zustand 0 (Bitmuster CV51)
* CV50 Signalmodus: Bit7=1 : invertiert die Softled-Ausgänge (HIGH=OFF) (MobaTools ab V0.9)
* Bit 2..0: Bitmuster hard/soft gibt an, welche Ausgänge 'hart' umschalten (Bit=1)
* und welche Ausgänge weich überblenden (Bit=0)
* CV51 Bitmuster der Ausgänge für Befehl 1.Adresse 0 (rot)
* CV52 Bitmuster der Ausgänge für Befehl 1.Adresse 1 (grün)
* CV53 Index des Vorsignals am gleichen Mast ( 0 …. )
* CV54 Bitmuster der Zustände, bei denen das Vorsignal dunkel ist:
* Bit 0: Befehl 1.Adresse 0 (rot)
* Bit 1: Befehl 1.Adresse 1 (grün)
* Bit 2: Befehl 2.Adresse 0 (rot)
* u.s.w.
* FSIGNAL0 1. Folgeadresse (optional)
* CV55 Bit 2.. 0 Bitmuster hard/soft gibt an, welche Ausgänge 'hart' umschalten (Bit=1)
* und Welche Ausgänge weich überblenden (Bit=0)
* CV56 Bitmuster der Ausgänge für Befehl 2.Adresse 0 (rot)
* CV57 Bitmuster der Ausgänge für Befehl 2.Adresse 1 (grün)
* CV58 reserved
* CV59 reserved
* FSIGNAL0 2. Folgeadresse (optional)
* CV60 Bit 2.. 0 Bitmuster hard/soft gibt an, welche Ausgänge 'hart' umschalten (Bit=1)
* und Welche Ausgänge weich überblenden (Bit=0)
* CV61 Bitmuster der Ausgänge für Befehl 3.Adresse 0 (rot)
* CV62 Bitmuster der Ausgänge für Befehl 3.Adresse 1 (grün)
* CV63 reserved
* CV64 reserved
*
* FVORSIG Vorsignalfunktion
* weitgehend wie FSIGNAL2 ausser:
* CV53 low Byte der Adresse des angekündigten Hauptsignals
* CV54 high Byte der Adrsse des angekündigten Hauptsignals
*/
#define ENCODER_DOUBLE // Eigenschaften des Drehencoders (Impulse per Raststellung)
 

// vom Anwender änderbare Parameter um den Zubehördecoder an die verwendete HW anzupassen
 
// Beispiel für Variante mit Licht-Ausfahrsignal mit Vorsignal, mit Betriebsmode Led an Pin 13 (interne Led)
 
//----------------------------------------------------------------
// Hardwareabhängige Konstante ( nicht per CV änderbar)
//----------------------------------------------------------------
const byte dccPin = 2;
const byte ackPin = NC;
 
// Eingänge analog: ( Bei Nano und Mini - Versionen kann hier auch A7 und A6 verwendet werden, um mehr
// digital nutzbare Ports freizubekommen.
// beim UNO sind A7+A6 nicht vorhanden! )
const byte betrModeP = A7; // Analogeingang zur Bestimmung des Betriebsmodus. Wird nur beim
// Programmstart eingelesen!
const byte resModeP = A6; // Rücksetzen CV-Werte + Mittelstellung Servos
 
// Eingänge digital (die Ports A0-A5 lassen sich auch digital verwenden): ---------
 
// Drehencoder zur Servojustierung ...........
//#define ENCODER_AKTIV // Wird diese Zeile auskommentiert, wird der Encoder nicht verwendet.
// Die Encoder-Ports werden dann ignoriert, und können anderweitig
// verwendet werden.
const byte encode1P = NC; // Eingang Drehencoder zur Justierung.
const byte encode2P = NC;
// ............................................
//-------------------------------------------------------------------------------------------------------
// Betriebswerte ( per CV änderbar ) Diese Daten werden nur im Initiierungsmodus in die CV's geschrieben.
// Der Initiierungsmodus lässt sich per Mode-Eingang aktivieren oder er ist automatisch aktiv, wenn keine
// sinnvollen Werte im CV47 stehen.
//-------------------------------------------------------------------------------------------------------
const byte DccAddr = 17; // DCC-Decoderadresse
const byte iniMode = 0x50 | AUTOADDR /*| ROCOADDR*/; // default-Betriebsmodus ( CV47 )
const int PomAddr = 50; // Adresse für die Pom-Programmierung ( CV48/49 )
 

//Konstante für Lichtsignalfunktion
#define SIG_DARK_TIME 300 // Zeit zwischen Dunkelschalten und Aufblenden des neuen Signalbilds
#define SIG_RISETIME 500 // Auf/Abblendezeit
 
// Ausgänge: mit NC gekennzeichnete Ausgänge werden keinem Port zugeordnet. Damit können Ports gespart werden,
// z.B. wenn bei einem Servo kein Polarisierungsrelais benötigt wird
const byte modePin = 13; // Anzeige Betriebszustand (Normal/Programmierung) (Led)
 
#define MAX_LEDS 16 // default ist 16. Kann auf die tatsächlich benutzte Zahl reduziert werden, um RAM zu sparen.
// Pro Softled werden 19 Byte benötigt

const byte iniTyp[] = { FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0 };
const byte out1Pins[] = { A0, NC, A3, NC, 3, NC, 6, NC, 9, NC };
const byte out2Pins[] = { A1, NC, A4, NC, 4, NC, 7, NC, 10, NC };
const byte out3Pins[] = { A2, NC, A5, NC, 5, NC, 8, NC, 11, NC };

const byte iniFmode[] = { 0, 0b000100, 0, 0b000100, 0, 0b000100, 0, 0b000100, 0, 0b000100 };
const byte iniPar1[] = { 0b001001, 0b110001, 0b001001, 0b110001, 0b001001, 0b110001, 0b001001, 0b110001, 0b001001, 0b110001 };
const byte iniPar2[] = { 0b100010, 0b100110, 0b100010, 0b100110, 0b100010, 0b100110, 0b100010, 0b100110, 0b100010, 0b100110 };
const byte iniPar3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
const byte iniPar4[] = { 0b000101, 0, 0b000101, 0, 0b000101, 0, 0b000101, 0, 0b000101, 0 };
//------------------------------------------------------------------------------------
 

 




Sind nur einfache ein-Ausfahrsignale und ich habe außer die Ausgansgspins nichts geändert.


Grüße Detlef


 
Detsimbo
RegionalExpress (RE)
Beiträge: 94
Registriert am: 17.12.2016
Ort: Schwarzwald
Gleise Roco Geoline
Spurweite H0
Steuerung Traincontroller 9 Gold
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#194 von MicroBahner , 16.06.2017 17:02

Hallo Jürgen,

Zitat

Habe ich da noch etwas übersehen? Oder falsch verstanden?

Nein, Du hast nichts übersehen und auch nichts falsch verstanden. Das dürfte noch ein Fehler im Decoder sein. Ich bin bei den Tests irgendwie immer davon ausgegangen, dass das zum Vorsignal gehörende Hauptsignal etwas weiter weg steht und deshalb von einem getrennten Decoder angesteuert wird. Darum habe ich immer eine Adresse ausserhalb des Adressbereiches des Decoders genommen. Es sollte aber natürlich auch mit einer Adresse im Decoderbereich funktionieren. Da wird's nochmal ein Update geben müssen.

Edit: Die Pins 0 und 1 beim Arduino Nano zu verwenden ist immer etwas kritisch, da dort auch der USB-Seriell Wandler dran hängt.

Hallo Detlef,

Zitat

Im Manual steht das sich der Decoder das letzte Signal nicht merkt und daher beim "Neustart" auf 0 startet, was(wenn ich das richtig verstanden habe) rote Led leuchtet, bedeutet.
Gibt es eine Möglichkeit das der Decoder sich das letzte Signal merken kann? Also wenn ich ihn vom Strom nehme und wieder mit Strom versorge mir das letzte Signal anzeigt?

Mhmm - das habe ich bei den Signalen eigentlich absichtlich so gemacht, da ich es nicht sinnvoll finde, wenn nach dem Einschalten ein Signal auf 'freie Fahrt' steht. Grundsätzlich ist sowas natürlich schon machbar ( bei den anderen Funktionen ist das ja auch so - beim Servo ist es auch wichtig, damit der beim Einschalten nicht 'wild' in die andere Lage fährt ). Allerdings verwende ich den CV-Wert, der sonst für die Speicherung des aktuellen Zustands dient, bei den Lichtsignalen als zusätzlichen Funktionsparameter. Ich werd' mal drüber nachdenken...


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#195 von juergiboy , 16.06.2017 17:33

Hallo Franz-Peter,

danke für die prompte Antwort.
Nachdem ich mich mal etwas in den Source vertieft habe, habe ich auch die Stelle gefunden, bei der zu früh abgebrochen wird:

1
2
3
4
5
6
7
8
9
10
11
 
    DB_PRINT( "DecAddr=%d, Weichenadresse: %d , Ausgang: %d, State: %d", BoardAddr, wAddr, OutputAddr, State );
bool vsFlag = false;
for ( i = 0; i < WeichenZahl; i++ ) {
if ( wAddr == weichenAddr+i ) {
// ist eigene Adresse, Sollwert setzen
dccSoll[i] = OutputAddr & 0x1;
dccState[i] = State;
DB_PRINT( "Weiche %d, Index %d, Soll %d, Ist %d", wAddr, i, dccSoll[i], fktStatus[i] ); //##
// break; // Schleifendurchlauf abbrechen, es kann nur eine Weiche sein
}
// Bei Vorsignalen auch alternative Adresse prüfen
 



Nachdem ich das break dann mal auskommentiert habe, funktioniert es dann auch (fast) so wie gewünscht.
Mit der Einschränkung, dass es bei den Folgeadressen (bei mir dann z.B. die 23) nicht mehr geht - es wird ja immer auf die Hauptadresse des Signals verglichen...


Gruß
Jürgen


juergiboy  
juergiboy
Regionalbahn (RB)
Beiträge: 44
Registriert am: 08.02.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#196 von MicroBahner , 16.06.2017 17:34

Hallo Jürgen,
ja, genau dort werde ich nochmal Hand anlegen müssen


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


khbury hat sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#197 von Detsimbo , 16.06.2017 19:40

Okay... dann war mein Post wohl etwas überflüssig ops: ich wollt mich mal einmischen sorry ops:

Zitat

Mhmm - das habe ich bei den Signalen eigentlich absichtlich so gemacht, da ich es nicht sinnvoll finde, wenn nach dem Einschalten ein Signal auf 'freie Fahrt' steht. Grundsätzlich ist sowas natürlich schon machbar ( bei den anderen Funktionen ist das ja auch so - beim Servo ist es auch wichtig, damit der beim Einschalten nicht 'wild' in die andere Lage fährt ). Allerdings verwende ich den CV-Wert, der sonst für die Speicherung des aktuellen Zustands dient, bei den Lichtsignalen als zusätzlichen Funktionsparameter. Ich werd' mal drüber nachdenken...


Ich fände es irgendwie gut wenn nicht alle Signale nach dem einschalten auf rot stehen sondern der letzte Zustand geschaltet würde. Ist aber wieder nur eine persönliche Meinung und bestimmt auch nicht realitätsnah?!
Die Sache mit dem EEPROM ist mir etwas zu "hoch" dazu muss ich noch mehr Erfahrung haben, ich bin ja jetzt schon fast überfordert


Grüße Detlef


 
Detsimbo
RegionalExpress (RE)
Beiträge: 94
Registriert am: 17.12.2016
Ort: Schwarzwald
Gleise Roco Geoline
Spurweite H0
Steuerung Traincontroller 9 Gold
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#198 von MicroBahner , 19.06.2017 22:14

Hallo Jürgen,
ich habe mal eine erste Korrekturversion auf Github hochgeladen. Da sollte das mit den Vorsignalen jetzt funktionieren. Vielleicht kannst Du mal testen, ob das jetzt bei dir funktioiniert.
Bis zu einer neuen Version wird's noch etwas dauern, da ich in nächster Zeit erstmal nicht dazu komme am Decoder weiterzumachen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#199 von juergiboy , 26.06.2017 21:53

Hallo Franz-Peter,

ich habe die neue Entwicklungsversion heute Abend mal auf meinen (frisch angekommenen) Maple Minis ausprobiert.
Und ja, es funktioniert, das Vorsignal schaltet alle Zustände des Hauptsignals mit! Sehr schön.

Aber dabei ist mir folgendes merkwürdiges Verhalten aufgefallen:
Ich habe ja noch einen Servo an der ersten Adresse, der auch durchaus funktioniert (ich habe um die Ausgänge PB6 und PB7 einen Bogen gemacht ).
Allerdings flackert dann ein Großteil der Signal-LEDs während der Bewegung des Servos gleich mit!? Das machen genau die LEDs, die zu der Zeit eigentlich aus wären. Ich habe das auch mit mehreren Ausgängen für den Servo probiert - immer das gleiche Verhalten.
Hier die Konfiguration für den Test:

1
2
3
4
5
6
7
8
9
10
11
 
const byte iniTyp[]     =   {   FSERVO, FSTATIC, FSIGNAL2, FSIGNAL0, FVORSIG, FSIGNAL0, FSIGNAL2, FSIGNAL0};
const byte out1Pins[] = { 10, 22, 12, NC, 18, 20, 28, NC}; // output-pins der Funktionen
const byte out2Pins[] = { NC, NC, 13, NC, 19, 25, 29, NC};
const byte out3Pins[] = { NC, NC, 14, NC, NC, NC, 30, NC};

const byte iniFmode[] = { SAUTOOFF, 0, 0, 0, 0, 0, 0, 0};
const byte iniPar1[] = { 0, 0, 0b00001, 0b00110, 0b00011, 0b01010, 0b00001, 0b00110};
const byte iniPar2[] = { 82, 0, 0b00010, 255, 0b11000, 255, 0b00010, 255};
const byte iniPar3[] = { 8, 0, 0, 0, 27, 0, 0, 0};
const byte iniPar4[] = { 0, 0, 0, 0, 0, 0, 0, 0}; // nur für Lichtsignale!
 
 



Betroffen sind aber nicht alle Ausgänge, die des letzten Signals (28, 29, 30) flackern nicht.

Ein schneller Test mit dem NANO hat ergeben, dass das Verhalten hier nicht auftritt.


Gruß
Jürgen


juergiboy  
juergiboy
Regionalbahn (RB)
Beiträge: 44
Registriert am: 08.02.2016


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#200 von Uwe HAL , 02.07.2017 11:47

Halle Franz-Peter, hallo Stummis,

endlich habe ich es geschafft und habe mir einen Lichtsignaldecoder zusammen gesteckt. Die Software angepasst und auf den Nano geladen. Ich wollte schon Freudensprünge machen als HP0 aufleuchtete. Alles schien gut. Als ich jedoch das Signalbild wechseln wollte passierte nichts. Der Decoder reagierte nicht auf Adresse 50 meiner Multimaus, auch alle anderen Adressen von 45 - 55 zeigten keine Wirkung. Kurz mal mein Aufbau:

- Ausgangspins für die LED A0 (rot), A1 (grün), A2 (gelb)
- Adresse an der Multimaus W0050

Hier folgt meine Datei Zubehördecoder.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
#define ENCODER_DOUBLE  // Eigenschaften des Drehencoders (Impulse per Raststellung)
 

// vom Anwender änderbare Parameter um den Zubehördecoder an die verwendete HW anzupassen
 
// Beispiel für Variante mit Licht-Ausfahrsignal mit Vorsignal, mit Betriebsmode Led an Pin 13 (interne Led)
 
//----------------------------------------------------------------
// Hardwareabhängige Konstante ( nicht per CV änderbar)
//----------------------------------------------------------------
const byte dccPin = 2;
const byte ackPin = 4;
 
// Eingänge analog: ( Bei Nano und Mini - Versionen kann hier auch A7 und A6 verwendet werden, um mehr
// digital nutzbare Ports freizubekommen.
// beim UNO sind A7+A6 nicht vorhanden! )
const byte betrModeP = A7; // Analogeingang zur Bestimmung des Betriebsmodus. Wird nur beim
// Programmstart eingelesen!
const byte resModeP = A6; // Rücksetzen CV-Werte + Mittelstellung Servos
 
// Eingänge digital (die Ports A0-A5 lassen sich auch digital verwenden): ---------
 
// Drehencoder zur Servojustierung ...........
//#define ENCODER_AKTIV // Wird diese Zeile auskommentiert, wird der Encoder nicht verwendet.
// Die Encoder-Ports werden dann ignoriert, und können anderweitig
// verwendet werden.
const byte encode1P = A3; // Eingang Drehencoder zur Justierung.
const byte encode2P = A2;
// ............................................
//-------------------------------------------------------------------------------------------------------
// Betriebswerte ( per CV änderbar ) Diese Daten werden nur im Initiierungsmodus in die CV's geschrieben.
// Der Initiierungsmodus lässt sich per Mode-Eingang aktivieren oder er ist automatisch aktiv, wenn keine
// sinnvollen Werte im CV47 stehen.
//-------------------------------------------------------------------------------------------------------
const byte DccAddr = 50; // DCC-Decoderadresse
const byte iniMode = 0x50 | AUTOADDR | ROCOADDR ; // default-Betriebsmodus ( CV47 )
const int PomAddr = 50; // Adresse für die Pom-Programmierung ( CV48/49 )
 

//Konstante für Lichtsignalfunktion
#define SIG_DARK_TIME 300 // Zeit zwischen Dunkelschalten und Aufblenden des neuen Signalbilds
#define SIG_RISETIME 500 // Auf/Abblendezeit
 
// Ausgänge: mit NC gekennzeichnete Ausgänge werden keinem Port zugeordnet. Damit können Ports gespart werden,
// z.B. wenn bei einem Servo kein Polarisierungsrelais benötigt wird
const byte modePin = 13; // Anzeige Betriebszustand (Normal/Programmierung) (Led)
 
#define MAX_LEDS 16 // default ist 16. Kann auf die tatsächlich benutzte Zahl reduziert werden, um RAM zu sparen.
// Pro Softled werden 19 Byte benötigt

const byte iniTyp[] = { FSIGNAL2, FSIGNAL0 };
const byte out1Pins[] = { A0, NC };
const byte out2Pins[] = { A1, NC };
const byte out3Pins[] = { A2, NC };
const byte iniFmode[] = { 0b100000, 0b000100 };
//const byte iniPar1[] = { 0b001001, 0b110001 };
//const byte iniPar2[] = { 0b100010, 0b100110 };
//const byte iniPar3[] = { 0, 0 };
//const byte iniPar4[] = { 0b000101, 0 };
//const byte iniFmode[] = { 0b000000, 0b000100};
const byte iniPar1[] = { 0b000001, 0b000001};
const byte iniPar2[] = { 0b000010, 0b000110};
const byte iniPar3[] = { 200, 0};
const byte iniPar4[] = { 0b000101, 0}; // nur für Lichtsignale!
//------------------------------------------------------------------------------------
 
 



Irgendwas mache ich falsch, ich weiß nur nicht was. Kann mir da vielleicht jemand weiterhelfen? Mit einen DCC-Sniffer habe ich überprüft, ob das DCC-Signal am Arduino ankommt, alles gut.

Achso, ehe ich es vergesse, Franz-Peter vielen Dank für deine Programmierarbeit, das Projekt ist so genial

Allen noch einen schönen Sonntag.

Gruß Uwe


Liebe Grüße aus Niemberg bei Halle (S) :D

Hier geht's zu meiner Anlage: http://stummiforum.de/viewtopic.php?f=64&t=140522


 
Uwe HAL
InterRegio (IR)
Beiträge: 114
Registriert am: 06.05.2015


   

Lenz Booster LV102 mit Booster Mangementsystem BMS-D von Boll
rtDrive Lenz Digikeijs DR5000

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz