Hallo Hardi,
ok, verstehe. I2C reicht ja eigentlich auch.
Meine Variante der ZZA baut halt auf SPI auf.
Als Hardware verwende ich mittlerweile ja auch entweder einen wemos D32 oder D1 und steuere alles über WLAN.
Also entweder CAN oder telnet.
Also entweder hat jedes OLED (bzw. Gleis) bei DCC/CAN 2 hoch n Adressen, je nach dem wieviele Texte angezeigt werden können.
pro 2 Text Varianten kommt eine Adresse dazu.
Bsp:
Adresse 1 Grün = 1. Text
Adresse 1 rot = 2. Text
Adresse 2 Grün = 3. Text
usw.
Über Telnet (WLAN) entfallen die Adressen komplett.
Hier kann ich dann dynamisch Texte für jedes Gleis erzeugen.
Dazu rufe ich über iTrain jeweils ein script pro anzuzeigenden Text auf.
Hier bin ich also enorm flexibel. Würde das Steuerungsprogramm das hergeben, könnte man hier viel machen.
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
******************************************************************************
* the sketch receives the text to be displayed at Telnet port 23
******************************************************************************
* USING WIFI CLOCK:
* ----------------------------------------------------------------------------
* if "-T xx:xx" received at port 23:
* xx:xx is converted to analog clock image and drawn at OLED display
* example:
* C:Program Files (x86)Nmap>echo -T 13:48 | ncat 10.0.0.57 23
* ----------------------------------------------------------------------------
* if "-S" received at port 23 then clock counts up by 1 minute
* example:
* C:Program Files (x86)Nmap>echo -S | ncat 10.0.0.57 23
* ----------------------------------------------------------------------------
* if "-D <GLEIS>" received at port 23 then display will show "Zugdurchfahrt"
* example:
* C:Program Files (x86)Nmap>echo -S | ncat 10.0.0.57 23
* ----------------------------------------------------------------------------
* if "-C <GLEIS>" received at port 23 then display will be cleared
* example:
* C:Program Files (x86)Nmap>echo -C 1 | ncat 10.0.0.57 23
******************************************************************************
* Setting of Traindata via telnet
* ----------------------------------------------------------------------------
* -G <GLEIS> -U <ABFAHRTSZEIT> -N <ZUGNUMMER> -Z <ZUGZIEL> -1 <ZUGLAUF1> -2 <ZUGLAUF2> -W <WAGENSTAND> -A <HALTEPOSITION> -L <LAUFTEXT>
* ----------------------------------------------------------------------------
* Parameter definition:
* ---------------------
* -G <GLEIS> -> rail of departure -> max 3 digits
* -U <ABFAHRTSZEIT> -> time of departure -> max 5 digits
* -N <ZUGNUMMER> -> train number -> max 7 digits
* -Z <ZUGZIEL> -> train target -> max 16 digits
* -1 <ZUGLAUF1> -> next stop (1) -> max 20 digits
* -2 <ZUGLAUF2> -> next stop (2) -> max 20 digits
* -W <WAGENSTAND> -> -> max 7 digits
* -A <HALTEPOSITION> -> -> max 7 digits
* -L <LAUFTEXT> -> rolling text -> max 100 digits
* ----------------------------------------------------------------------------
* German "Umlaute" need to be send as their representative eg:
* Ü=Ue, ü=ue, Ä=Ae, ä=ae and so on.
* ----------------------------------------------------------------------------
* example:
* C:Program Files (x86)Nmap>echo -L1 ICE 745 -L2 Muenchen -L3 ueber Nuerenberg -L4 21:10 | ncat 10.0.0.57 23
* C:Program Files (x86)Nmap>echo -G 1a -U 07:24 -N ICE 153 -Z Mainz Hbf -1 Schlier ueber -2 Karlsruhe nach -W ABCDEFG -A -222F-- -L +++ Vorsicht: STUMMI-ICE faehrt durch +++ +++ Danke an Tobias, Klaus & Fredddy,... +++
******************************************************************************/
Mein Code liegt in meinen Github Repository: https://github.com/Clooney82/MaeCAN-Proj.../master/CAN_ZZA
Hier liegt momentan noch V03. Bei mit verwende ich V04.
Weis aber aktuell nicht mehr was sich da im detail geändert hatte, wollte eigentlich noch einer Variante für MQTT bauen.
Da ich aber seit Februar/März nichts mehr an der Anlage oder Anzeige gemacht hat, ist das mittlerweile aus meinem Gedächtnis entschwunden.
Funktionsfähig müsste in V03 folgendes sein: DCC, CAN (MM&DCC) und telnet.
Unterstützt werden OLEDs via SPI ( I2C hab ich mangels passendem OLED nie getestet ).
Als HW geht: Arduino Nano, UNO, Mega, sowie Teensy 3.2, 3.5, 3.5 und Wemos D1 ( D32 & D32Pro erst in V04).
Über iTrain habe ich das über viele Aktionen gelöst - Pro Anzeigetext eine Aktion.
Bsp (Telnet): Wenn Zug X den Block von Gleis 1 reserviert, führe script X aus
Bsp (Adresse): Wenn Zug X den Block von Gleis 1 reserviert, schalte Adresse X auf y
Das ist natürlich doof, wenn der Zug nur durchfährt. Hier muss man dann den Zustand des Signals zusätzlich auswerten.
Sprich wenn Signal rot = halt, dann Zeige das an.
Leider gibt es keine Aktionen in iTrain, die nur ausgeführt werden wenn ein Zug hält. Hier muss ich nochmals mit Xander reden, der wollte das mal einbauen.