Zugzielanzeiger für den Bahnsteig mit Arduino

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

Threadersteller
TobiBS
S-Bahn (S)
Beiträge: 23
Registriert: Do 10. Dez 2015, 18:34
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#76

Beitrag von TobiBS » Mo 3. Dez 2018, 20:02

ich_der_n-spurer hat geschrieben:
Mi 14. Nov 2018, 16:59
Hat jemand vieleicht schon eine analoge Modellbahn an den PC angeschlossen und steuert sie damit??? Suche speziell im Bereich NRW, so dass man sich auch mal treffen könnte. Natürlich sind auch alle anderen eingeladen, aber da ist der persönliche Kontakt ggf. schwieriger.
Hallo Freddy,

ich schlage dir vor einen eigenen Thread aufzumachen, oder diesen Post dahin verschieben zu lassen, da das schon sehr weit über das ursprüngliche Thema hinausgeht.

Gruß,
Tobias


Rothpe
S-Bahn (S)
Beiträge: 22
Registriert: So 11. Mär 2018, 20:55
Nenngröße: H0
Stromart: digital
Steuerung: Redbox oder Arduino
Gleise: C-Gleis
Wohnort: Hausen bei Forchheim
Alter: 55
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#77

Beitrag von Rothpe » Mi 2. Jan 2019, 16:19

Hallo Tobias und alle anderen Kollegen,

erst mal wünsche ich Euch allen ein gesundes neues Jahr 2019.

Über die Feiertage habe ich endlich meinen Zugzielanzeiger zum Einsatz gebracht
Habe jetzt einen 3D Drucker und meinen kompletten Bahnsteig damit entworfen und gedruckt.
Dort enthalten ist auch das Gehäuse für den Zugzielanzeiger.

https://www.bilder-upload.eu/bild-76e16 ... 3.jpg.html

Nochmal mein herzliches Dankesschön an alle die hier mit Sketch gehofen haben.

Fragen zum Gehäuse bzw. Bahnsteig und 3D Druck jederzeit sehr gerne.

Viele Grüße

Peter

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1349
Registriert: Do 28. Apr 2005, 08:37
Wohnort: München
Kontaktdaten:
Jamaika

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#78

Beitrag von ThKaS » Do 3. Jan 2019, 12:56

Moin Peter,

zeig doch mal ein paar Bilder deiner Konstruktionsdateien.
Boden, Masten, Dach.
Getrennt gedruckt oder „in einem Stück“?
lieben Gruss von südlich des Weisswurst-Äquators
Thomas

guckst: www.thkas-moba.de ‹(•¿•)› www.mucis.de

Bild

Mä-K-Gleis, Tams MC, Multi-Kulti Decoder, WDP


Rothpe
S-Bahn (S)
Beiträge: 22
Registriert: So 11. Mär 2018, 20:55
Nenngröße: H0
Stromart: digital
Steuerung: Redbox oder Arduino
Gleise: C-Gleis
Wohnort: Hausen bei Forchheim
Alter: 55
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#79

Beitrag von Rothpe » Fr 4. Jan 2019, 14:06

Hallo Thomas,

Danke für Dein Interesse an den Bildern.

Anbei ein paar Bilder von der Konstruktion:

https://www.bilder-upload.eu/bild-68088 ... 0.png.html --> Dach
https://www.bilder-upload.eu/bild-a52c4 ... 2.png.html --> Stützen
https://www.bilder-upload.eu/bild-06fc3 ... 1.png.html --> Zugzielanzeiger mit Deckel
https://www.bilder-upload.eu/bild-289cd ... 0.png.html --> Bahnsteig mit Unterführung
https://www.bilder-upload.eu/bild-b83e1 ... 4.png.html --> Bahnsteig Belag gekachelt.

Die anderen Stücke vom Bahnsteig sind identisch nur ohne Unterführung.
Für die Bahnsteig Kanten habe ich die 10mm von Auhagen genommen.

Weitere Fragen natürlich gerne.

Viele Grüße

Peter


andiatbaden
InterRegio (IR)
Beiträge: 181
Registriert: Do 21. Mär 2013, 19:35
Nenngröße: H0
Stromart: digital
Steuerung: DCC++ und Loconet
Gleise: K-Gleis
Wohnort: Endingen am Kaiserstuhl
Alter: 56
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#80

Beitrag von andiatbaden » So 6. Jan 2019, 17:38

Hallo Peter,

toll was Du da bisher gemacht hast. Ich hatte das Thema für mich vor ca. 1,5 Jahren mal in Angriff genommen.

Ich hatte die Anzeige über Rocrail angesteuert, d.h. die Steuerung ging über die Blöcke im Bahnhof. Leider habe ich den Code nicht mehr.

Mich würde interessieren, was für einen 3D-Drucker du hast, die Ergebnisse sehen ja recht gut aus. Kannst Du vielleicht von den Anzeigegehäusen etwas bessere Bilder einstellen? Wäre auch toll, wenn man die im Vergleich zu Preisers oder was anderem sehen könnte.

Danke!
Viele Grüße aus dem Badischen

Andreas

Anlagenbau:

Andreshaim II: http://www.stummiforum.de/viewtopic.php?f=15&t=135978

Mein Planungsthread:

Andreshaim II (Neu): http://www.stummiforum.de/viewtopic.php?f=24&t=131628

Benutzeravatar

bahnfreek
Beiträge: 5
Registriert: Do 18. Okt 2018, 11:02
Nenngröße: H0
Stromart: DC
Steuerung: Z21;Rocrail
Wohnort: Köln
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#81

Beitrag von bahnfreek » So 6. Jan 2019, 19:10

Hallo Andreas,

Weißt du denn noch wie du die damals eingebunden hattest in rocrail? Also welches Board und welche Schnittstelle?

Gruß Simon
Plus auf Masse das knallt klasse...


andiatbaden
InterRegio (IR)
Beiträge: 181
Registriert: Do 21. Mär 2013, 19:35
Nenngröße: H0
Stromart: digital
Steuerung: DCC++ und Loconet
Gleise: K-Gleis
Wohnort: Endingen am Kaiserstuhl
Alter: 56
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#82

Beitrag von andiatbaden » So 6. Jan 2019, 19:35

Hallo Simon,

ich hatte glaube ich ein Visual Studio Programm geschrieben, das von RocRail die Events gezogen hatte und dann per serieller Ausgabe direkt an einen Arduino die Infos geschrieben hat.

Wenn es Dich interessiert, kann ich schauen, ob ich den Quellcode für Visual Studio noch habe. In der Zwischenzeit würde ich es wohl über Loconet machen.
Viele Grüße aus dem Badischen

Andreas

Anlagenbau:

Andreshaim II: http://www.stummiforum.de/viewtopic.php?f=15&t=135978

Mein Planungsthread:

Andreshaim II (Neu): http://www.stummiforum.de/viewtopic.php?f=24&t=131628

Benutzeravatar

bahnfreek
Beiträge: 5
Registriert: Do 18. Okt 2018, 11:02
Nenngröße: H0
Stromart: DC
Steuerung: Z21;Rocrail
Wohnort: Köln
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#83

Beitrag von bahnfreek » So 6. Jan 2019, 19:58

Moin, so eilig ist es nicht aber bin für die Ideen dankbar;) Das hatte mich schon die ganze Zeit beschäftigt und auch die Frage ob dies überhaupt geht. Aber scheinbar schon;)

Danke dir für die Rückmeldung;)

Gruß Simon
Plus auf Masse das knallt klasse...


andiatbaden
InterRegio (IR)
Beiträge: 181
Registriert: Do 21. Mär 2013, 19:35
Nenngröße: H0
Stromart: digital
Steuerung: DCC++ und Loconet
Gleise: K-Gleis
Wohnort: Endingen am Kaiserstuhl
Alter: 56
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#84

Beitrag von andiatbaden » Di 8. Jan 2019, 20:32

Hallo Simon,

hab alles was ich hatte durchgesucht. Das einzige was ich noch gefunden habe ist die RocRail Planungsdatei, die das
angesteuert hatte. Ich hatte das über Ansagen mit Sprachausgabe gemacht. Damit ließ sich ein externes Programm mit dem Text ansteuern.

Falls ich noch was finden sollte, schicke ich Dir das per PN.

Edit: Falls ich irgendwie sonst noch helfen kann, gerne
Viele Grüße aus dem Badischen

Andreas

Anlagenbau:

Andreshaim II: http://www.stummiforum.de/viewtopic.php?f=15&t=135978

Mein Planungsthread:

Andreshaim II (Neu): http://www.stummiforum.de/viewtopic.php?f=24&t=131628


Bahn-Rambo
Beiträge: 2
Registriert: Do 20. Dez 2018, 10:20
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#85

Beitrag von Bahn-Rambo » Sa 19. Jan 2019, 17:18

Hallo @ all

Mein Name ist Ramo und bin hier im Forum neu.
Nach langer Suche habe ich das tolle Projekt Zugzielanzeige gefunden. Ich hatte im Dezember über PN wegen des Codes angefragt, leider ging die Anfrage über die Feiertage unter. Gestern kamen nun die Displays und ich brenne darauf anfangen zu können. Vielleicht klappt es ja direkt über das Forum. Vielen Dank

Ramo

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1349
Registriert: Do 28. Apr 2005, 08:37
Wohnort: München
Kontaktdaten:
Jamaika

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#86

Beitrag von ThKaS » Sa 19. Jan 2019, 17:43

Moin moin,

nimm den Code aus Post #71 , da hast du alles drin.
lieben Gruss von südlich des Weisswurst-Äquators
Thomas

guckst: www.thkas-moba.de ‹(•¿•)› www.mucis.de

Bild

Mä-K-Gleis, Tams MC, Multi-Kulti Decoder, WDP


Bahn-Rambo
Beiträge: 2
Registriert: Do 20. Dez 2018, 10:20
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#87

Beitrag von Bahn-Rambo » So 20. Jan 2019, 13:32

Servus,

vielen Dank für die schnelle Antwort. Soweit bin ich nicht jede Antwort durchgegangen. Es funktioniert Super :lol: :P

Danke Ramo

Benutzeravatar

moppe
Metropolitan (MET)
Beiträge: 4062
Registriert: So 7. Aug 2011, 08:16
Nenngröße: H0
Stromart: DC
Steuerung: G&R ana/digi - Z21/Lenz/ESU
Gleise: 2L
Wohnort: Norddeutsche Halbinsel.
Kontaktdaten:
Dänemark

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#88

Beitrag von moppe » So 20. Jan 2019, 15:29

Bahn-Rambo hat geschrieben:
So 20. Jan 2019, 13:32
Es funktioniert Super
Ja, natürlich (weil die code ist von Tobias, modifiziert bei mir :-) ).


Klaus
"Meine" Modellbahn: http://www.modelbaneeuropa.dk
Dänisches Bahnforum: http://www.baneforum.dk


leviticus
InterRegioExpress (IRE)
Beiträge: 489
Registriert: Mi 13. Sep 2006, 14:50
Nenngröße: H0
Stromart: digital
Steuerung: ZIMO
Gleise: Roco ohne Bettung
Wohnort: Hafnerbach
Alter: 41
Kontaktdaten:
Österreich

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#89

Beitrag von leviticus » Mo 21. Jan 2019, 15:41

Hallo,

ich habe auch versucht eine PN an Peter (rothpe) zu schicken, aber die hängt bei mir im Postausgang :-(

Nachdem ich erst beginne mich mit Arduino zu beschäftigen - hat schon jemand von euch das ganze DCC fähig gemacht?
Um die Zugzielanzeige dynamisch zu steuern muss der Arduino DCC Befehle verstehen.

LG Stefan
Das Gegenteil von gut - ist gut gemeint!
Meine Anlage: viewtopic.php?f=64&t=106547

Benutzeravatar

Hardi
InterRegio (IR)
Beiträge: 246
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Zugzielanzeiger mit mehreren OLEDs für den Bahnsteig mit Arduino

#90

Beitrag von Hardi » Mo 11. Feb 2019, 01:24

Hallo Zusammen,

die Idee eine Bahnsteiganzeige mit einem Arduino zu basteln hat mir gleich als ich das erste Mal über den Thread hier gestolpert bin sehr gefallen. Aber als dann ein Stummikollege mir so ein Display in die Hand gedrückt hat ist es dann passiert. Seit dem Tag an dem meine Displays aus China eingetroffen sind bastle ich an dem Programm…

Das Ergebnis möchte ich Euch hiermit vorstellen:
Ich habe die frei verfügbaren Programme aus dem Thread hier angeschaut und versucht daraus ein Programm zu schreiben das alle Wünsche (und noch viel mehr) erfüllt. Dazu habe ich die Programme aus Post #68, #71 und #73 benutzt. Vielen Dank an Tobias, Klaus und Fredddy. Ich Ihr nehmt es mir hoffentlich nicht übel, dass ich Eure Ideen und Programmteile verwendet habe.

Die Anzeige verwendet das gleiche Layout wie die vorgestellten Programme und kann wie in Programm #73 gezeigt über die serielle Schnittstelle Texte empfangen. Zusätzlich gibt es noch einige Erweiterungen:

Überblick der Änderungen:
  • Mehrere OLED Anzeigen an einem Arduino
  • Steuerung über DCC Kommandos
  • Über 100 Ausgabezeilen im FLASH
  • Taster zum Wechseln der Anzeigen
  • Flexibel anpassbares Display Layout
  • Verwendet neue Display Bibliothek u8g2lib
  • Schneller Bildschirmupdate
  • Speichereinsparung durch besondere Schriftarten
  • Serielle Schnittstelle zum Senden der Texte wurde erweitert
In folgenden möchte ich auf die Änderungen im Detail eingehen.


Mehrere OLED Anzeigen an einem Arduino:
Mit einem zusätzlichen MOS-FET (BS170) und einem Widerstand kann mehrere OLED Displays von einem Arduino aus ansteuern. Pro OLED wird ein FET benötigt. Mit ihm wird die Datenleitung (SDA) zum Display geschaltet. Auf diese Weise kann man fast beliebig viele Displays mit einem Arduino betreiben. Limitierende Faktoren sind dabei die Anzahl der Arduino Pins und die Stromstärke der Taktleitung des Arduinos. Die Anzahl der Pins kann man über eine Demultiplexer IC (74HCT238 oder CD4514) erweitern und der Taktausgang könnte verstärkt werden.
Bei dem Konzept wird immer nur eine Anzeige angesprochen. Das bedeutet, dass man nur auf einem Display eine Laufschrift anzeigen kann. Von der Rechenzeit her könnte man auch zwei Displays mit einer Laufschrift ansteuern, das würde aber mehr Speicher benötigen und einiges an Aufwand bedeuten.


Steuerung über DCC Kommandos:
Die zweite wichtige Neuerung ist die Auswahl der angezeigten Texte über DCC Kommandos. Das war der eigentliche Grund warum ich mich mit der Geschichte befasst hab. Bei dem MobaLedLib Projekt habe ich gelernt, wie einfach das einlesen von DCC Kommandos ist (https://www.stummiforum.de/viewtopic.ph ... 5#p1926995). Darum habe ich mir vorgenommen das gelernte hier einzusetzen. Aber auch hier habe ich mich gewaltig verschätzt wie lange das dauert. 17 Tage lang habe ich an der Anzeige gebastelt. Vielleicht habe ich aber auch zu viele Ideen einbringen wollen…
Die DCC Signale werden mit einem Optokoppler, einer Diode und einem Widerstand eingelesen. Das Programm reagiert auf verschiedene Zubehörbefehle. In der Datei „Configuration.h“ bestimmt man über die Konstante FIRST_DCC_ADDR und LAST_DCC_ADDR welche Adressen benutzt werden. Die Kommandos kann man in mehrere Gruppen einteilen. Die wichtigsten Befehle kommen am Anfang so dass man schon über zwei DCC Kommandos alles steuern kann. Wenn man mehr ins Detail gehen will, dann können die weiteren Befehle genutzt werden. Hier die verschiedenen Gruppen:
  1. Wechsel der Anzeige auf dem aktuellen OLED Panel
  2. Umschalten zu einem anderen OLED Panel
  3. Anzeige der nächsten Text Meldung auf einem bestimmten OLED
  4. Auswahl eines bestimmten OLED Panels
  5. Bestimmte Test Meldung an das aktuelle OLED Panel schicken
Die Gruppen 3 bis 5 enthalten mehrere DCC Kommandos in Abhängigkeit der Anzahl der verwendeten OLED Anzeigen und Text Meldungen. Das ist recht komplex geworden. Ich werde weiter unten anhand einer Tabelle Funktionen der einzelnen Adressen beschreiben.


Über 100 Ausgabezeilen im FLASH
Im Thread ist der Wunsch aufgekommen, dass man viele verschiedene Meldungen anzeigen will. Das Beispiel #68 in dem nur 7 verschiedene Anzeigen verfügbar sind hatte schon die Grenze des im Arduino verfügbaren Speichers erreicht:

Code: Alles auswählen

Der Sketch verwendet 16200 Bytes (52%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1604 Bytes (78%) des dynamischen Speichers, 444 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Wenig Arbeitsspeicher verfügbar, es können Stabilitätsprobleme auftreten. 
Kritisch war hier der verfügbare Arbeitsspeicher. Das lag daran, das bei einem Arduino Programm normalerweise alle Konstanten aus dem Programmspeicher (FLASH) in den Arbeitsspeicher (RAM) kopiert werden. Das kann man einfach umgehen indem man die Konstanten aus dem FLASH liest. Das Schlüsselwort dazu ist „PROGMEM“. Im Internet gibt es dazu viele Artikel.
Ich habe die Meldungen in eine eigene Datei „Text_Messages.h“ ausgelagert. Hier sorgt das Schlüsselwort PROGMEM dafür das kein zusätzlicher RAM belegt wird.

Code: Alles auswählen

const PROGMEM char Text_Messages[] =
//    uhrzeit      zugnummer     ziel                  zuglauf1                  zuglauf2                  wagenstand   lauftext  1         2         3         4         5         6         7         8         9        10
//    "12345"      "1234567"     "1234567890123456"    "12345678901234567890"    "12345678901234567890"    "1234567"    "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
   SL "22:24"   NE "ICE 153"  NE "Mainz Hbf"        NE "Schlier \374ber"      NE " Karlsruhe nach"       NE "-222F--" NE "+++ Vorsicht: STUMMI-ICE f\344hrt durch +++            +++ Danke an Tobias, Klaus & Fredddy,... +++ "
   SL "09:34"   NE "RB 1521"  NE "Aschaffenburg"    NE "Gro\337auheim - Kahl" NE "- Gro\337krotzenburg" NE ""        NE "“
   SL "10:04"   NE "RB 3237"  NE "Plattling"        NE "Freising - Moosburg"  NE "- Landshut"           NE ""        NE ""
   SL "12:53"   NE "EC 172"   NE "Hamburg - Altona" NE "Berlin Hbf - "        NE "Hamburg Hbf"          NE "-222211" NE "Versp\344tung ca 10 Min"
   SL "15:21"   NE "ICE 592"  NE "Berlin Ostbf"     NE "Fulda - Kassel -"     NE "Braunschweig Hbf"     NE "11111"   NE ""                                                                                                  
   SL "17:02"   NE "IC 602"   NE "Puttgarden"       NE "Wuppertal - Dortmund" NE "Bremen - Hamburg"     NE " 22111"  NE ""
   SL "18:30"   NE "RE 7"     NE "Kiel / Flensburg" NE "Elmshorn -"           NE "Neum\374nster"        NE "   2121" NE "Zugteilung in Neum\374nster - Vorderer Zugteil f\344hrt bis Flensburg"
   SL G934      NE "Hg-Exp"   NE "Hogsmeade"        NE "King's Cross"         NE "- nonstop -"          NE "-------" NE "Hogwarts-Express" 
   SL "21:45"   NE "ICE 651"  NE "Leipzig Hbf"      NE "Fulda - Eisenach"     NE ""                     NE ""        NE "Achtung: Heute auf Gleis 7" 

; // End of the Text_Messages string

Der FLASH Speicher eines Arduino Nanos ist 32 KB Groß. Wenn das Programm nicht allzu viel Speicher belegt, dann können im FLASH über Hundert Displays abgelegt werden. Damit möglichst wenig Speicher belegt wird und die Eingabe übersichtlich ist habe ich alle Meldungen in einer langen „char[]“ Liste abgelegt. Das hat gegenüber einem Array mit konstanter Länge den Vorteil, dass nur für benutzte Zeichen Speicher belegt wird. Getrennt werden die Einträge durch besondere Trennzeichen (Dieses Trennzeichen benötigt nicht mehr Speicher als ein einzelner Text da dieser mit einer 0 abgeschlossen wird. Die Trennzeichen habe ich, damit sie einfach änderbar sind, in Makros abgelegt. Das Makro „SL“ steht für „Start Line“ und enthält das Zeichen ‚§‘. Die Trennung zwischen zwei Einträgen wird mit „NE“ gemacht.

Code: Alles auswählen

#define SL              "\247" // Start Line
#define NE              "|"    // Next Entry

Wenn jemanden tatsächlich mehr als 100 verschiedene Einträge erstellen will, dann kann er auf den Arduino Mega2560 umsteigen. Dieser bietet mit seinen 256 KB FLASH Platz für über 2000 Einträge.
Unabhängig davon ob Ihr 10 oder 2000 Einträge erstellt habt würde ich mich freuen, wenn ihr Eure Liste hier veröffentlichen würdet, denn ich bin zu Faul vernünftig klingende Daten zu generieren.
In den Texten habe ich die Deutschen Umlaute durch Oktale Nummern ersetzt. Das hat den Vorteil, dass die Zeichen unabhängig vom benutzten Editor und der darin verwendeten Schriftart auf dem Arduino richtig dargestellt werden. Die entsprechenden Kodes findet Ihr am Anfang der Datei „Text_Messages.h“.

Die einzelnen Zeilen der Listen müssen nicht unbedingt alle Felder enthalten. Man kann auch Zeilen generieren welche nur Teile der Anzeige ändern. Dazu werden die Kommandos zur Steuerung der Ausgaben über die serielle Schnittstelle benutzt.
Beispiel:

Code: Alles auswählen

   SL "#LDiese Zeile verändert nur den Lauftext" 
Die Kommandos der seriellen Schnittstelle werden weiter unten erklärt (Falls das noch jemand liest).
Damit ist es möglich, dass man auch verschieden „Textbausteine“ erstellt und diese individuell kombiniert. In Verbindung mit den DCC Befehlen hat man damit unendlich viele Möglichkeiten.


Taster zum Wechseln der Anzeigen
In dem Programm habe ich ein paar Zeilen eingebaut mit denen man per Tastendruck die Anzeige wechseln kann. In dem Beispiel habe ich 5 Tasten benutzt. Die Tasten werden an die Arduino Pins 3 bis 7 angeschlossen (Siehe „Configuration.h“) wobei der andere Anschluss der Taster mit GND verbunden wird.
Mit dem ersten Taster ruft man die nächste Text Meldung ab. Sie wird auf dem aktuellen OLED Panel ausgegeben.
Wenn mehrere Panels angeschlossen sind, und in der Konfiguration aktiviert wurden, dann wird das aktuelle Panel gewechselt. Wenn, wie im Schaltplan vorgeschlagen, LEDs für jedes Panel vorhanden sind, dann erkennt man das an der entsprechenden Leuchtdiode. Der Inhalt der Anzeige ändert sich mit diesem Taster nicht. Erst ein Druck auf den ersten Taster verändert die Ausgabe.
Die Taster 3 bis 5 aktivieren die nächste Anzeige für ein bestimmtes OLED. Taster 3 ändert die Anzeige vom ersten Panel, Taster 4 vom zweiten Panel und entsprechend Taster 5 für das dritte OLED Display.
Wenn nur ein OLED angeschlossen ist (Default Konfiguration), dann werden die Taster zwei bis fünf zur Auswahl einer bestimmten Text Nachricht genutzt.
Anstelle der Taster können auch andere Quellen angeschlossen werden. Das kann z.B. ein Zubehör Decoder, eine Lichtschranke oder ein Reed-Kontakt sein. Damit können dann z.B. eine neue Anzeige abgerufen werden, wenn ein Zug das entsprechende Bahnhofsgleis verlässt.



Flexibel anpassbares Display Layout
In dem Original Programm wurden die Positionen auf der Anzeige, die Schriftarten und andere Eigenschaften im Programm angegeben. Das erschwert die Anpassung des Layouts an andere Anzeigen. Darum habe ich alle Parameter in eine Tabelle umgewandelt welche einfach zu verändern ist:

Code: Alles auswählen

const PROGMEM Disp_T Disp[] =
  {// xR   xL  y   Pix  RolT. Color Right DynInv NoFont  Del  DispIf font            Activ Define variable length
   //             Width Len   Index alig. Len    Descent Mark Privi.                 Char
    { 30,  20,  5,  78, 20, { 0,    0,    0,   RT_SHIFT, 0,   0 },   FONT_4x6,       'L',  DEFVAR(lauftext  ) }, // lauftext  Should be the first entry because it overwrites the areas on the left and right side with Black pixels
    {128,   0, 13,  18,  0, { 1,    1,    0,     0,      0,   0 },   FONT_6x13B,     'G',  DEFVAR(gleis     ) }, // gleis
    {  0, 100,  6,  25,  0, { 1,    0,    0,     0,      1,   0 },   FONT_5x8,       'U',  DEFVAR(uhrzeit   ) }, // uhrzeit
    {  0, 100, 12,  20,  0, { 1,    0,    0,     0,      1,   0 },   FONT_4x6,       'N',  DEFVAR(zugnummer ) }, // zugnummer
    { 30,   0, 28, 176,  0, { 1,    0,    0,     0,      1,   0 },   FONT_PS_11X17,  'Z',  DEFVAR(ziel      ) }, // ziel      proportional font 11x17 ? https://github.com/olikraus/u8glib/wiki/fontgrouporgdot
    { 30,  20, 11,  80,  0, { 1,    0,    0,     0,      1,   0 },   FONT_4x6,       '1',  DEFVAR(zuglauf1  ) }, // zuglauf1
    { 30,  20, 17,  80,  0, { 1,    0,    0,     0,      1,   0 },   FONT_4x6,       '2',  DEFVAR(zuglauf2  ) }, // zuglauf2
    {  0, 100, 26,  28,  0, { 0,    0,    1,     0,      1,   0 },   FONT_4x6,       'W',  DEFVAR(wagenstand) }, // wagenstand
    {  0, 100, 20,  28,  0, { 1,    0,    0,     0,      0,   1 },   FONT_4x6,       'A',  DEFVAR(abschnitt ) }, // haltepositionen ABCDEFG
  };
Damit kann man das Programm auch einfach an ganz andere Aufgaben anpassen. In der Tabelle können einfach weitere Zeilen hinzugefügt werden oder Zeilen weggelassen werden.
Ich habe mich hierbei sehr genau an die Vorgaben des Originalprogramms gehalten, weil ich dieses Layout für sehr gelungen halte. Lediglich die Abstände der Zeilen wurden so angepasst, dass auch Buchstaben mit Unterlänge (g, y, p, q) richtig dargestellt werden. Das spielt zwar eigentlich keine Rolle, weil das Display so klein ist, dass man das so wieso nicht ohne Lupe erkennen kann, aber ich bin Perfektionist.
Durch Änderung der Tabelle könnte man z.B. einfach eine Tafel mit den Ankunftszeiten aller Züge erstellen.
Wenn sich jemand von Euch daran macht, dann veröffentlicht euer Ergebnis bitte hier. Bei Fragen helfe ich Euch gerne.
Eine Kleinigkeit habe ich noch nicht richtig an die Tabelle angepasst. Die Buchstabenbreite der Laufschrift ist momentan fest im Programm verankert.


Neue Display Bibliothek u8g2lib:
Das Originalprogramm benutzt eine ältere Version der Grafikbibliothek (u8glib) welche seit 4 Jahren nicht mehr gepflegt wird. Darum habe ich das Programm an die neue Bibliothek (u8g2lib) angepasst. Der neue Grafiktreiber ist deutlich schneller. Er verwendet die Standard I2C Bibliothek und ist damit einfacher für andere Plattformen zu portieren. Dummerweise sind einige der benutzten Schriftarten in der neuen Version nicht mehr vorhanden. Darum musste ich diese aus der alten Bibliothek importieren und anpassen. Dabei habe ich den Speicherbedarf die Schriften dann auch gleich noch optimiert (siehe unten).
Die neue Grafikbibliothek kann man komfortabel in der Arduino IDE installieren. Hier (https://www.stummiforum.de/viewtopic.ph ... 6#p1913636) habe ich gezeigt wie man das bei der MobaLedLib macht. Für die Grafik Routinen gibt man entsprechend „u8g2“ ein.
Mit dem Kompilerschalter „USE_U8G2LIB“ in der Konfiguration kann man zu Testzwecken die alte Bibliothek aktivieren.
Das Programm benutzt einen Modus bei dem der Bildschirminhalt komplett im Speicher abgelegt wird bevor er an das OLED Display geschickt wird. Dadurch wird die Updatezeit nochmal deutlich reduziert. Beim Ausgansprogramm wurde ein Treiber benutzt der nur einen halb so großen Bildschirmspeicher benutzt hat.

NmraDcc:

Das Programm benötigt außerdem die NmraDcc Bibliothek. Auch diese kann über die Bibliotheksvarwaltung der Arduino IDE installiert werden. "NmraDcc" im Suchfeld eingeben.

Speichereinsparung durch besondere Schriftarten:
Da in der neuen Grafikbibliothek einige der verwendeten Schriftarten fehlten mussten diese neu generiert werden. Zum Glück wird das dazu benötigte Programm „bdfconv.exe“ mit der Bibliothek mitgeliefert. Dem Programm kann man als Parameter mitteilen welche Zeichen konvertiert wurden. Auf diese Weise konnte ich aus den Zeichen > 127 nur die Deutschen Umlaute verwenden. Dadurch wird der Speicherverbrauch der Schriftarten halbiert. Für den Fall, dass man einmal alle Zeichen benötigt sind auch die vollständigen Schriften im der ZIP Datei enthalten.

Zeichensatz welche nur die Deutschen Umlaute enthält (5x8_t_german.h: 1173 Bytes):
Bild Wer kann sich denken wozu ich das ¾ Zeichen benötige?

Normaler Zeichensatz (6x13B_tf.h: 2258 Bytes):
Bild

Senden von Texten über die serielle Schnittstelle:
Das Senden von Texten über die serielle Schnittstelle ist ein Feature welches (wenn ich das richtig verstanden habe) von Fredddy eingeführt wurde. Ich finde es sehr praktisch, besonders zum Testen der Anzeige. Dabei werden Befehle mit einem ‚#‘ eingeleitet gefolgt von einem Zeichen mit dem der Befehl beschrieben wird. ‚#L‘ ist z.B. der Befehl zur Definition eines Lauftextes.
Zu den bestehenden Befehlen habe zwei weitere hinzugefügt:
‚#T‘ zur Auswahl eines Textes aus der Datei „Text_Messages.h“. Auf den Befehl folgt die Nummer des gewünschten Textes. ‚#T7‘ wählt entsprechend den Text 7 aus und zeigt diesen auf dem aktuellen OLED Panel an.
Mit dem zweiten neuen Befehl kann das aktuelle OLED Panel ausgewählt werden. Dazu wird ‚#‘ gefolgt von einem Kleinbuchstaben verwendet. ‚#a‘ aktiviert das erste OLED.

Außerdem habe ich den Befehlsinterpreter um eine Kurzschreibweise erweitert. Mit dem ‚|‘ Zeichen können zwei Felder hintereinander übertragen werden ohne dass man spezifizieren muss welches Feld man ansprechen will. Dabei ist die Reihenfolge entsprechend der oben gezeigten Tabelle „Disp[]“ verwendet. Dabei gibt es eine Ausnahme. Die Laufschrift sollte am Ende der Zeile in der Textdatei stehen, weil hier die Längen sehr unterschiedlich sind.

Hier eine Liste der Befehle:
L: Lauftext (Maximal 100 Zeichen)
G: Gleisnummer
W: Wagenstand
1: Zuglauf 1
2: Zuglauf 2
Z: Ziel
U: Abfahrtszeit
N: Zugnummer
X: Lösche Zug Daten (Zugnummer, Uhrzeit, Ziel, Zuglauf1, Zuglauf2, Wagenstand)
<: Gleis Links
>: Gleis Rechts
T: Anzeige der Text Message auf dem aktuellen OLED Panel. #T+ und #T- sind auch möglich
a-z: Auswahl eines OLED Panels.

Achtung: Wenn einzelne Felder über die den seriellen Monitor der Arduino IDE verändert werden, dann bleiben die anderen unverändert. Wenn mehrere OLEDs verwendet werden kann das zu Verwirrungen führen. Die Felder enthalten die Werte der letzten Änderung auch wenn diese in einem anderen OLED Panel gemacht wurden.


DCC Kommandos
Die Anzahl der DCC Kommandos sind abhängig von der Anzahl der benutzten OLED Displays und von der Anzahl der Zeilen in der Datei „Text_Messages.h“. Die Adresse des Befehls hängt außerdem von der gewählten Startadresse ab (FIRST_DCC_ADDR). In der folgenden Tabelle
  1. Wechsel der Anzeige auf dem aktuellen OLED Panel
  2. Umschalten zu einem anderen OLED Panel
  3. Anzeige der nächsten Text Meldung auf einem bestimmten OLED
  4. Auswahl eines bestimmten OLED Panels
  5. Bestimmte Test Meldung an das aktuelle OLED Panel schicken

Die Adresse in Spalte „Beispiel Adresse“ bezieht sich auf das Beispielprogramm bei dem FIRST_DCC_ADDR = 5 ist und drei OLED Panels verwendet werden.

In der Spalte „Adresse Allgemein“ werden folgende Definitionen benutzt:
First = FIRST_DCC_ADDR: Erste DCC Adresse in der Konfiguration
Onr = OLED Panel Nummer beginnend mit 1
Oanz2 = Anzahl der OLED Panels geteilt durch 2 (Aufgerundet auf nächste ganze Zahl (Bei 3 OLEDs ist Oanz2 = 2))
Tnr = Textblock Nummer geteilt durch 2 (Aufgerundet)

Gruppe Beispiel
Adresse
Adresse
Allgemein
Richtung  Beschreibung  
1 5 First Rot  Vorangegangenen Textblock auf
aktuellem OLED Panel anzeigen  
1 5 " Grün  Nächsten Textblock auf
aktuellem OLED Panel anzeigen  
2 6 First+1 Rot  Vorangegangenes OLED Panel auswählen  
2 6 " Grün  Nächstes OLED Panel auswählen  
3 7 First+1+Onr Rot  Nächsten Textblock auf OLED 1 anzeigen  
3 7 " Grün  Nächsten Textblock auf OLED 2 anzeigen  
3 8 " Rot  Nächsten Textblock auf OLED 3 anzeigen  
3 8 " Grün  Nächsten Textblock auf OLED 1 anzeigen  
4 9 First+1+Oanz2+Onr Rot  OLED 1 auswählen  
4 9 " Grün  OLED 2 auswählen  
4 10 " Rot  OLED 3 auswählen  
4 10 " Grün  Keine Funktion  
5 11 First+1+2*Oanz2+Tnr2 Rot  Textblock 1 auf aktuellem OLED anzeigen  
5 11 " Grün  Textblock 2 auf aktuellem OLED anzeigen  
5 12 " Rot  Textblock 3 auf aktuellem OLED anzeigen  
5 12 " Grün  Textblock 4 auf aktuellem OLED anzeigen  
5 13 " Rot  Textblock 5 auf aktuellem OLED anzeigen  
5 13 " Grün  Textblock 6 auf aktuellem OLED anzeigen  
5 14 " Rot  Textblock 7 auf aktuellem OLED anzeigen  
5 14 " Grün  Textblock 8 auf aktuellem OLED anzeigen  
5 15 " Rot  Textblock 9 auf aktuellem OLED anzeigen  
5 15 " Grün  Textblock 10 auf aktuellem OLED anzeigen  
5 : : :  :  
5 : : :  :  
5 10+Tnr2 First+1+2*Oanz2+Tnr2 Grün  Textblock n auf aktuellem OLED anzeigen  


Wenn nur ein OLED Panel benutzt wird, dann wird die Tabelle viel einfacher. Dann gibt es nur die Gruppe 1 und 5:
Gruppe Beispiel
Adresse
Adresse
Allgemein
Richtung  Beschreibung  
1 5 First Rot  Vorangegangenen Textblock auf
aktuellem OLED Panel anzeigen  
1 5 " Grün  Nächsten Textblock auf
aktuellem OLED Panel anzeigen  
5 6 First+Tnr2 Rot  Textblock 1 auf aktuellem OLED anzeigen  
5 6 " Grün  Textblock 2 auf aktuellem OLED anzeigen  
5 7 " Rot  Textblock 3 auf aktuellem OLED anzeigen  
5 7 " Grün  Textblock 4 auf aktuellem OLED anzeigen  
5 8 " Rot  Textblock 5 auf aktuellem OLED anzeigen  
5 8 " Grün  Textblock 6 auf aktuellem OLED anzeigen  
5 9 " Rot  Textblock 7 auf aktuellem OLED anzeigen  
5 9 " Grün  Textblock 8 auf aktuellem OLED anzeigen  
5 10 " Rot  Textblock 9 auf aktuellem OLED anzeigen  
5 10 " Grün  Textblock 10 auf aktuellem OLED anzeigen  
5 : : :  :  
5 : : :  :  
5 5+TNr First+Tnr2 Grün  Textblock n auf aktuellem OLED anzeigen  
Liest den Mist eigentlich irgendeiner?


Die Schaltung:
Zur Ansteuerung von 3 OLED Panels werden neben dem Arduino nur drei MOS-FET Transistoren (BS170), drei 1K und ein 4K7 Widerstand benötigt:
Bild

Mit dieser Schaltung und aktiviertem Zufälligen Wechsel in der Konfiguration könnt Ihr bereits drei Bahnsteigsanzeigen betreiben. Die „Configuration.h“ Datei muss dann so angepasst werden:

Code: Alles auswählen

#define UNUSED_AIN_PIN          A3      // This analog input is used to generate a random initial value for the random() function

const PROGMEM            //Pin Rail Side
Rail_Cfg_T Rail_Cfg[] = {//Nr  Nr
                          { 8, "3", 'L' },
                          { 9, "4", 'R' },   // Uncomment this lines to use 3 OLED pannels
                          {10, "5", 'L' },   // and add additional lines if more then 3 pannels are used
                        };

// If the following two lines are enabled the displayed text will change randomly
#define RAND_CHANGE_MINTIME   20      // Minimal time between two display changes [s]
#define RAND_CHANGE_MAXTIME   60      // Maximal time between two display changes [s]
In der angehängten ZIP Datei ist nur ein OLED aktiv damit das Programm sie so verhält wie die Ausgangsprogramme. Außerdem ist der Zufällige Wechsel deaktiviert.

Das folgende Schaltbild zeigt den Aufbau meiner Testschaltung:
Bild
Hier sind zunächst einmal die drei Leuchtdioden im Rechten Teil. Diese empfehle ich dringend, weil man daran das aktive OLED Panel erkennt.
Wichtig ist Außerdem der Optokoppler unten Links. Mit ihm werden die DCC Signale aufbereitet.
Wenn man keine DCC Signale benutzen will oder einfach zu Testzwecken dann sollten die Taster ebenfalls eingebaut werden.
Das CAN Modul und der WS2811 Chip habe ich für Zukünftige Erweiterungen des Programms vorgesehen.

Und so sieht mein Testaufbau aus:
Bild

Die drei Displays etwas größer:
Bild

Ein paar Ansichten der Platine:
Bild
Bild
Bild


Und weil Ihr mir das sonst nicht glaubt hier das Beweis Video:


Was Fehlt noch? Ach Ja, die Software:
Bahnsteiganzeige_Hardi.zip
Das Programm ist zunächst für ein OLED Panel konfiguriert weil ich davon ausgehe, dass Ihr es gleich mit Eurem aktuellen Aufbau testen wollt. Wenn Ihr dann weitere OLEDs entsprechend der Schaltung oben angeschlossen habt, dann müssen die Einable Pins für die OLEDs in der Datei „Configuration.h“ aktiviert werden:

Code: Alles auswählen

const PROGMEM            //Pin Rail Side
Rail_Cfg_T Rail_Cfg[] = {//Nr  Nr
                          { 8, "3", 'L' },
                          { 9, "4", 'R' },   // Uncomment this lines to use 3 OLED pannels
                          {10, "5", 'L' },   // and add additional lines if more then 3 pannels are used
                        };
Hier nochmal die Schaltpläne als PDF:
Bahnsteigsanzeige.zip

Und hier noch eine Idee: Wenn man das Display von der Platine trennt, dann wird die Geschichte nur noch halb so Dick. Ich finde, dass es dann von den Proportionen eher zur Realität passt. Ich will mal versuchen ob ich die Verbindung der Beiden Teile mit dünnen Drähten verlängern kann…
Bild
Bild



Links:
Gerade eben habe ich ein ähnliches Projekt entdeckt:
http://www.hjb-modellbahn.de/ARDUINO/Ba ... nzeige.htm

Hardi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Hardi am Mo 11. Feb 2019, 07:38, insgesamt 1-mal geändert.

Benutzeravatar

Südbahnler
InterRegioExpress (IRE)
Beiträge: 370
Registriert: Di 12. Dez 2006, 20:31
Nenngröße: H0
Stromart: digital
Steuerung: ECoS mit TC Gold
Gleise: K-Gleis
Wohnort: Bodenseeraum
Alter: 51
Kontaktdaten:

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#91

Beitrag von Südbahnler » Mo 11. Feb 2019, 07:34

Hallo Hardi,

was soll ich sagen :bigeek: Ich bin schon fast sprachlos, was Du da gemacht hast! So was ähnliches hatte ich mir auch mal überlegt, bin aber schon viel früher gescheitert.

Vielen Dank für das ausführliche Erklären und Einstellen dieses tollen Projektes :gfm:
Viele Grüße
Albrecht

Mein Projekt: Großstadtbahnhof


aftpriv
InterCity (IC)
Beiträge: 754
Registriert: Di 3. Apr 2012, 10:01
Nenngröße: H0
Stromart: digital
Steuerung: Gleisbox+RocRail-RN-Node
Gleise: K-Gleis|:|(3-Leiter)
Wohnort: 636xx Hessen/Main-Kinzig-Kreis
Alter: 68

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#92

Beitrag von aftpriv » Mo 11. Feb 2019, 09:01

Hardi, einfach genial :clap: :prost: :gfm:
Hier eine Liste der Befehle:
L: Lauftext (Maximal 100 Zeichen)
G: Gleisnummer
W: Wagenstand
1: Zuglauf 1
2: Zuglauf 2
Z: Ziel
U: Abfahrtszeit
N: Zugnummer
X: Lösche Zug Daten (Zugnummer, Uhrzeit, Ziel, Zuglauf1, Zuglauf2, Wagenstand)
<: Gleis Links
>: Gleis Rechts
T: Anzeige der Text Message auf dem aktuellen OLED Panel. #T+ und #T- sind auch möglich
a-z: Auswahl eines OLED Panels.
vielleicht noch zusätzlich: über Kopf

Gruß aus dem (wieder) verschneiten Spessart
Alf
Pickel-Bahner seit 1958 / K-Gleis + ZIMO-Decoder (MX633P22/MX645P22)
RocRail (BananaPi/CAN-Transc)<->Gleisbox DCC
RocNetNode (RaspberryPi/I2C)<->Weichen,Signale,Gleisbesetztmelder
Firefox Browser + andRoc: Fahrpulte
meine Anlage: http://alfred.mist-im-msp.de/


leviticus
InterRegioExpress (IRE)
Beiträge: 489
Registriert: Mi 13. Sep 2006, 14:50
Nenngröße: H0
Stromart: digital
Steuerung: ZIMO
Gleise: Roco ohne Bettung
Wohnort: Hafnerbach
Alter: 41
Kontaktdaten:
Österreich

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#93

Beitrag von leviticus » Mo 11. Feb 2019, 13:12

Hallo Hardi und alle anderen,

ich bin ja Einsteiger in die Arduino Welt und leider auch ein sehr lausiger Programmierer. Trotzdem möchte ich diese Zugzielanzeiger unbedingt auf meiner Anlage haben :D Deshalb DANKE an Euch, dass ihr Eure Erkenntnisse teilt!

Einen Arduino habe ich jetzt schon mal und werde in den nöchsten Tagen die ersten Versuche machen.

Wo habt ihr Eure Displays bezogen und welche habt ihr genommen?

LG Stefan
Das Gegenteil von gut - ist gut gemeint!
Meine Anlage: viewtopic.php?f=64&t=106547

Benutzeravatar

bahnfreek
Beiträge: 5
Registriert: Do 18. Okt 2018, 11:02
Nenngröße: H0
Stromart: DC
Steuerung: Z21;Rocrail
Wohnort: Köln
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#94

Beitrag von bahnfreek » Mo 11. Feb 2019, 14:23

Danke erstmal für den Code ! Sieht nice aus!
Ich habe damals zum testen die Displays genommen:

https://www.ebay.de/itm/0-91-IIC-I2C-Se ... 25f9063068

Haben ungefähr H0 Format. Kommt halt auf deine Spurweite an.

:gfm:
Plus auf Masse das knallt klasse...


aftpriv
InterCity (IC)
Beiträge: 754
Registriert: Di 3. Apr 2012, 10:01
Nenngröße: H0
Stromart: digital
Steuerung: Gleisbox+RocRail-RN-Node
Gleise: K-Gleis|:|(3-Leiter)
Wohnort: 636xx Hessen/Main-Kinzig-Kreis
Alter: 68

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#95

Beitrag von aftpriv » Mo 11. Feb 2019, 14:44

Servus Stefan

ich habe die genommen: https://de.aliexpress.com/item/1pcs-0-9 ... 3126BOrawH / € 1,40 / Stück + Versand ab € 0,46
Lieferzeit: 3 bis 4 Wochen, Steuerfrei (EU) bis € 22,00

Gruß
Alf
Pickel-Bahner seit 1958 / K-Gleis + ZIMO-Decoder (MX633P22/MX645P22)
RocRail (BananaPi/CAN-Transc)<->Gleisbox DCC
RocNetNode (RaspberryPi/I2C)<->Weichen,Signale,Gleisbesetztmelder
Firefox Browser + andRoc: Fahrpulte
meine Anlage: http://alfred.mist-im-msp.de/

Benutzeravatar

Hardi
InterRegio (IR)
Beiträge: 246
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#96

Beitrag von Hardi » Mo 11. Feb 2019, 16:03

Hallo Zusammen,

zunächst einmal vielen Dank für das Positive Feedback und die vielen „Bedankungen“.
Als Anzeige kann Grundsätzlich jedes Display mit einer I2C Schnittstelle verwendet werden welches von der u8g2 Bibliothek unterstützt wird. Eine Liste dieser Displays findet man hier: https://github.com/olikraus/u8g2/wiki/u8g2setupcpp

Achtung: Es gibt auch Module mit SPI Schnittstelle. Diese Funktionieren nicht mit der hier gezeigten Umschaltung.

Entscheidend ist dabei die Bezeichnung des Treiber Chips. Ich habe ein Modul mit dem SSD1306 Chip benutzt. Dieser ist auch im Programm eingetragen. In den beiden Links von Simon (bahnfreek) und Alf wird auch dieser Chip verwendet.

Hardi

Benutzeravatar

moppe
Metropolitan (MET)
Beiträge: 4062
Registriert: So 7. Aug 2011, 08:16
Nenngröße: H0
Stromart: DC
Steuerung: G&R ana/digi - Z21/Lenz/ESU
Gleise: 2L
Wohnort: Norddeutsche Halbinsel.
Kontaktdaten:
Dänemark

Re: Zugzielanzeiger mit mehreren OLEDs für den Bahnsteig mit Arduino

#97

Beitrag von moppe » Mo 11. Feb 2019, 17:07

Hardi hat geschrieben:
Mo 11. Feb 2019, 01:24
Ich habe die frei verfügbaren Programme aus dem Thread hier angeschaut und versucht daraus ein Programm zu schreiben das alle Wünsche (und noch viel mehr) erfüllt. Dazu habe ich die Programme aus Post #68, #71 und #73 benutzt. Vielen Dank an Tobias, Klaus und Fredddy. Ich Ihr nehmt es mir hoffentlich nicht übel, dass ich Eure Ideen und Programmteile verwendet habe.

Die Anzeige verwendet das gleiche Layout wie die vorgestellten Programme und kann wie in Programm #73 gezeigt über die serielle Schnittstelle Texte empfangen. Zusätzlich gibt es noch einige Erweiterungen:

Überblick der Änderungen:
  • Mehrere OLED Anzeigen an einem Arduino
  • Steuerung über DCC Kommandos
  • Über 100 Ausgabezeilen im FLASH
  • Taster zum Wechseln der Anzeigen
  • Flexibel anpassbares Display Layout
  • Verwendet neue Display Bibliothek u8g2lib
  • Schneller Bildschirmupdate
  • Speichereinsparung durch besondere Schriftarten
  • Serielle Schnittstelle zum Senden der Texte wurde erweitert
:gfm:

Hardi, es sieht sehr gut aus!!!


Klaus
"Meine" Modellbahn: http://www.modelbaneeuropa.dk
Dänisches Bahnforum: http://www.baneforum.dk

Benutzeravatar

Hardi
InterRegio (IR)
Beiträge: 246
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#98

Beitrag von Hardi » Mo 11. Feb 2019, 17:50

Hallo Klaus,
moppe hat geschrieben:
Mo 11. Feb 2019, 17:07
Hardi, es sieht sehr gut aus!!!
Das freut mich!

Eigentlich ist der Code ja von Dir (Und natürlich allen anderen Beteiligten):
moppe hat geschrieben:
So 20. Jan 2019, 15:29
Bahn-Rambo hat geschrieben:
So 20. Jan 2019, 13:32
Es funktioniert Super
Ja, natürlich (weil die code ist von Tobias, modifiziert bei mir :-) ).
Ich hab nur ein paar Kleinigkeiten angepasst…
Die Ideen und die Grafische Umsetzung sind von Euch. Ich habe nur ein paar technische Verbesserungen eingefügt.

Hardi


leviticus
InterRegioExpress (IRE)
Beiträge: 489
Registriert: Mi 13. Sep 2006, 14:50
Nenngröße: H0
Stromart: digital
Steuerung: ZIMO
Gleise: Roco ohne Bettung
Wohnort: Hafnerbach
Alter: 41
Kontaktdaten:
Österreich

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#99

Beitrag von leviticus » Di 12. Feb 2019, 09:25

Hallo zusammen,

Danke mal für die Links. Die ÖBB verwendet aktuell Displays mit blauem Hintergrund und weißer Schrift. Habt ihr einen Link zu so einem Display?

LG Stefan
Das Gegenteil von gut - ist gut gemeint!
Meine Anlage: viewtopic.php?f=64&t=106547

Benutzeravatar

bahnfreek
Beiträge: 5
Registriert: Do 18. Okt 2018, 11:02
Nenngröße: H0
Stromart: DC
Steuerung: Z21;Rocrail
Wohnort: Köln
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#100

Beitrag von bahnfreek » Di 12. Feb 2019, 09:30

Moin, ich habe leider noch keine OLED Displays gefunden die blau können in der Größe. Das könntest du ehr mit LCD darstellen wenn ich mich nicht irre. Da müsstest du aber die Software wieder anpassen.

Lasse mich aber gerne eines besseren belehren;)

Gruß Simon
Plus auf Masse das knallt klasse...

Antworten

Zurück zu „Elektrik und Elektronik“