Zugzielanzeiger für den Bahnsteig mit Arduino

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

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

Zugzielanzeiger mit mehreren OLEDs für den Bahnsteig mit Arduino

#90

Beitrag von Hardi »

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.
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#91

Beitrag von Südbahnler »

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: 8-gleisiger Kopfbahnhof für den Personenverkehr und Rangierbahnhof für den Güterverkehr

aftpriv
EuroCity (EC)
Beiträge: 1021
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: 70

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#92

Beitrag von aftpriv »

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 & RocNetNode
Email bezüglich MobaLedLib-Belange: LedLib@yahoo.com

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#93

Beitrag von leviticus »

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: 6
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 »

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
EuroCity (EC)
Beiträge: 1021
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: 70

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#95

Beitrag von aftpriv »

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 & RocNetNode
Email bezüglich MobaLedLib-Belange: LedLib@yahoo.com
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#96

Beitrag von Hardi »

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
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“
Benutzeravatar

moppe
ICE-Sprinter
Beiträge: 5587
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 »

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
PIKO C4 "Horror Gallery": http://moppe.dk/PIKOC4.html
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#98

Beitrag von Hardi »

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
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#99

Beitrag von leviticus »

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: 6
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 »

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

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: 57
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#101

Beitrag von Rothpe »

Hallo zusammen,

ich würde gerne die Zugzielanzeige an den Rocrail Fahrplan anpassen.
Hat jemand von Euch Erfahrung damit?

Hier auch ein Bild von meinem selbst konstruiertem Bahnstaeig mit Zugzielanzeige:

https://www.bilder-upload.eu/bild-73738 ... 4.jpg.html

Alles in 3D.
Bei Interesse Fragen an mich sehr gerne.

Viele Grüße

Peter
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#102

Beitrag von Hardi »

Hallo Stefan,
leviticus hat geschrieben: 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
Dieses Display
https://de.aliexpress.com/item/0-96-Zol ... 5ae7525e-3
ist nur ein bißchen größer, aber Farbig. Es kann mit der ucglib von Oli Kraus angesteuert werden. Von ihm ist auch die momentan verwendete Bibliothek. Ich habe die Farbbibliothek mal kurz mit einem anderen Display getestet. Es ist unglaublich wie schnell diese ist und dabei sehr wenig Speicher benutzt.
Ich gehe davon aus das die Anpassung des Programms an das Farbdisplay kein Problem ist.
=> Wenn es meine finanziellen Möglichkeiten erlauben werde ich mir ein paar dieser Displays bestellen. Vermutlich kann man hier auch das Glas von der Platine trennen so dass es in eine Anzeigetafel passt.

Ergänzung: 16.02.19:
Das Display benutzt den viel schnelleren SPI Bus. Damit kann man nicht mehr die Umschaltung für mehrere Displays verwenden wie ich sie im Beitrag #90 https://www.stummiforum.de/viewtopic.ph ... 2#p1939102 gezeigt habe. Aber das ist auch gar nicht mehr nötig. Das Display besitzt einen Chip Select (CS) Eingang. Über diesen kann man, wenn mehrere Displays angeschlossen sind, auswählen welche Anzeige angesprochen wird. => Bei dieser Lösung benötigt man keine zusätzlichen MOS-FETs.

Hardi
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#103

Beitrag von Hardi »

Hallo Zusammen,

es ist geglückt!!!

Es ist mir gelungen die 14 Verbindungen zwischen Display und Platine durch Lackisolierte Drähtchen mit einem Durchmesser von 0.22 mm zu ersetzen!
Damit ist die Bahnsteigsanzeige jetzt nur noch 1.3 mm statt 5 mm dick!

Glaubt Ihr mir nicht? Schaut selber:
Bild

Bild

Bild

Bild

3 Stunden Arbeit, aber es geht!

Hardi
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“

NiklasTT
Beiträge: 3
Registriert: So 24. Feb 2019, 12:58
Nenngröße: TT
Stromart: digital
Steuerung: PC, Handy
Gleise: Tillig Modellgleis
Wohnort: Guben
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#104

Beitrag von NiklasTT »

Hallo ich habe da ganze an einen arduino uno angeschlossen (nur ein Display) und der widerstand und Optokoppler werden sehr warm und befehle übers dcc System haben auch keine Wirkung. Ich habe das oled Display direkt über sda ,sci, gnd,und 5v angeschossen versorgen tu ich ihn auch über den Optokoppler. Pin 6 vom Optokoppler geht bei mir auf pin 2 von arduino uno.
der erste Eintrag steht auch im Display. Habt ihr ne Idee was da Faul ist?
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#105

Beitrag von Hardi »

Hallo Niklas,
NiklasTT hat geschrieben: Sa 2. Mär 2019, 17:01 Hallo ich habe da ganze an einen arduino uno angeschlossen (nur ein Display) und der widerstand und Optokoppler werden sehr warm und befehle übers dcc System haben auch keine Wirkung. Ich habe das oled Display direkt über sda ,sci, gnd,und 5v angeschossen versorgen tu ich ihn auch über den Optokoppler. Pin 6 vom Optokoppler geht bei mir auf pin 2 von arduino uno.
der erste Eintrag steht auch im Display. Habt ihr ne Idee was da Faul ist?
Das der Widerstand und der Optokoppler warm werden ist gar kein gutes Zeichen. Ich fürchte der Optokoppler ist kaputt. Hast Du den Widerstand R8 geprüft. Er muss 1 KOhm haben.

Aus der Ferne kann man so einen Fehler nicht finden. Das kann allesmögliche sein. Am besten Du suchst Dir jemanden aus deiner Umgebung und erklärst Ihm alles. Das muss kein Elektroniker sein. Wenn Du mit Ihm jede einzelne Verbindung und jedes Bauteil durchgehst, dann findet Ihr bestimmt den Fehler. Oft sieht man so ein Problem nicht alleine, aber wenn man es einem anderen zeigt, dann findet man den Fehler schnell. Ich mache das auch oft so mit Kollegen.

Wenn Du eine MS2 zum senden der DCC Befehle verwendest, dann muss diese im Menü so konfiguriert werden, dass sie DCC Befehle und nicht MM verwendet. Bei anderen Steuergeräten ist das vielleicht auch so.

Der Compilerschalter „#define USE_DCC“ muss auf 1 stehen. Überprüfe auch solche Dinge mit einem aus Deiner nähe.

Ich bin sicher Ihr findet das Problem.

Hardi
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“

NiklasTT
Beiträge: 3
Registriert: So 24. Feb 2019, 12:58
Nenngröße: TT
Stromart: digital
Steuerung: PC, Handy
Gleise: Tillig Modellgleis
Wohnort: Guben
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#106

Beitrag von NiklasTT »

Habe mein Fehler gefunden. Habe den falschen widerstand genommen das Braun und Rot sieht nämlich bein den wiederständern so sch**** gleich aus. Danke für deine Hilfe.

stadtbahnzug
InterCity (IC)
Beiträge: 558
Registriert: Mo 2. Apr 2012, 18:45
Nenngröße: H0
Steuerung: OpenDCC
Gleise: Piko A-Gleis, Tillig
Wohnort: Nähe Lübeck
Alter: 57
Kontaktdaten:
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#107

Beitrag von stadtbahnzug »

Moin Mitreisende,

sehr interessantes Projekt, das Ihr hier vorstellt. Habt Ihr bezüglich der erforderlichen Komponenten konkrete Produktvorschläge :?:

Ich habe bspw. bei unseren Freunden aus Fernost diese Displays https://de.aliexpress.com/item/0-91-Zol ... 43b6d204-9 gefunden. Sind das die richtigen :?:

Weitere Frage. An einer Bahnsteigkante sind ja meistens mehrere Anzeigen installiert. Wie verschaltet Ihr das, dass die alle identisch anzeigen :?:

Danke auf jeden Fall für die bisher geleistete Entwicklungsarbeit.

LG Oliver
Viele Grüsse von der Ostsee
Berlin in Maßstab 1:87 [ http://www.berlin1zu87.de ]

Berlin Stadtbahn - altersgerecht [Die Planung] - viewtopic.php?f=24&t=140111
Berlin Stadtbahn - altersgerecht [Der Aufbau] - folgt noch
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#108

Beitrag von Hardi »

Hallo Oliver,

ich habe dieses Display für meine Tests verwendet:
https://de.aliexpress.com/item/1-st-cke ... 4c4dvt3fa9

Vermutlich kann man die Daten und Clock mehrerer Displays parallel schalten so dass alle die gleichen Daten anzeigen. Ich habe das aber noch nicht probiert. Hier #90: https://www.stummiforum.de/viewtopic.ph ... 2#p1939102 habe ich 3 Displays mit unterschiedliche Daten versorgt. Es währe kein Problem das Programm so anzupassen, das 3 Mal dieselben Daten angezeigt werden. Allerdings kann nur eins eine Laufschrift anzeigen weil die Übertragungszeit sonst zu lang wird und die Schrift ruckelt.

Hardi
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“
Benutzeravatar

motte
InterRegio (IR)
Beiträge: 230
Registriert: Sa 10. Dez 2011, 10:25
Nenngröße: H0
Stromart: AC
Steuerung: Soll digital werden ;)
Gleise: Märklin K-Gleis
Wohnort: Lüdinghausen
Kontaktdaten:

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#109

Beitrag von motte »

:shock: da komme ich ja aus dem Staunen nicht mehr raus....
Read more on http://www.roters-web.de

Mit freundlichen Grüßen, der Ralph ...

kuechlca
Beiträge: 2
Registriert: Fr 1. Feb 2019, 16:29
Nenngröße: H0
Stromart: digital
Wohnort: Berlin
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#110

Beitrag von kuechlca »

Die Anzeigen am I2C-Bus (4 Adern) können parallel geschaltet werden und zeigen dann den gleichen Inhalt an.

Grüße
Carsten :wink:
:shock: H0 DCC Epoche V/VI
Benutzeravatar

motte
InterRegio (IR)
Beiträge: 230
Registriert: Sa 10. Dez 2011, 10:25
Nenngröße: H0
Stromart: AC
Steuerung: Soll digital werden ;)
Gleise: Märklin K-Gleis
Wohnort: Lüdinghausen
Kontaktdaten:

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#111

Beitrag von motte »

Wieviele Displays kann man denn gleichzeitig anschließen?
Read more on http://www.roters-web.de

Mit freundlichen Grüßen, der Ralph ...

AlexFL
Beiträge: 1
Registriert: Sa 2. Nov 2019, 18:12
Niederlande

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#112

Beitrag von AlexFL »

Hardi hat geschrieben: Fr 15. Feb 2019, 18:58 Hallo Stefan,
leviticus hat geschrieben: 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
Dieses Display
https://de.aliexpress.com/item/0-96-Zol ... 5ae7525e-3
ist nur ein bißchen größer, aber Farbig. Es kann mit der ucglib von Oli Kraus angesteuert werden. Von ihm ist auch die momentan verwendete Bibliothek. Ich habe die Farbbibliothek mal kurz mit einem anderen Display getestet. Es ist unglaublich wie schnell diese ist und dabei sehr wenig Speicher benutzt.
Ich gehe davon aus das die Anpassung des Programms an das Farbdisplay kein Problem ist.
=> Wenn es meine finanziellen Möglichkeiten erlauben werde ich mir ein paar dieser Displays bestellen. Vermutlich kann man hier auch das Glas von der Platine trennen so dass es in eine Anzeigetafel passt.

Ergänzung: 16.02.19:
Das Display benutzt den viel schnelleren SPI Bus. Damit kann man nicht mehr die Umschaltung für mehrere Displays verwenden wie ich sie im Beitrag #90 https://www.stummiforum.de/viewtopic.ph ... 2#p1939102 gezeigt habe. Aber das ist auch gar nicht mehr nötig. Das Display besitzt einen Chip Select (CS) Eingang. Über diesen kann man, wenn mehrere Displays angeschlossen sind, auswählen welche Anzeige angesprochen wird. => Bei dieser Lösung benötigt man keine zusätzlichen MOS-FETs.

Hardi
Hi Hardi,

Hasst du die Software auch angepasst für die Displays von deinen Link mit den SPI Bus? Habe diese mal bestellt weil ich auch ein farbigen Hintergrund benutzen möchte, aber mir ist jetzt nicht ganz klar ob dein Software damit wirkt?
Benutzeravatar

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

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#113

Beitrag von Hardi »

Hallo Alex,

tut mir leid, das Display war nur ein Vorschlag. Implementiert habe ich nichts dafür.

Hardi
Haltet Euch unbedingt von diesen Seiten fern:
͏͏͏ viewtopic.php?f=7&t=165060
͏͏͏ https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr unter meinem Profil bei „Webseite“

Clooney
InterCity (IC)
Beiträge: 572
Registriert: Sa 2. Jan 2016, 20:23
Nenngröße: H0
Stromart: AC
Steuerung: CS3+ & MS2 & iTrain 5
Gleise: C-Gleis
Wohnort: Gammelshausen
Alter: 38
Deutschland

Re: Zugzielanzeiger für den Bahnsteig mit Arduino

#114

Beitrag von Clooney »

Danke für die tolle Arbeit hier.
Bin aktuell daran das ganze mit einem bzw. mehreren SPI Display umzusetzen und später via CAN Bus zu steuern.
Einen ersten Erfolg habe ich auch schon erzielt und Hardis Programm mit dem Display zum laufen bekommen.
Jetzt muss ich noch herausfinden wie ich mehrere SPI Displays zum laufen bekomme.

Antworten

Zurück zu „Elektrik und Elektronik“