RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#51 von B-B , 20.05.2018 10:02

Leute einfach mal lesen,

#5 schickt ihm ne pn.

LG
Bernd


 
B-B
InterRegio (IR)
Beiträge: 172
Registriert am: 28.10.2009


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#52 von TobiBS , 20.05.2018 21:59

Zitat

Kleine Probleme hatte ich beim Einschalten des Nano mit der Anzeige, sie lief erst nach einem hardware reset des Arduino. Nachdem hier die Anfrage nach Sinn und Zweck nach dem LOW und HIGH des Pin 7 gestellt wurde, habe ich zwischen LOW und High einen kurzen delay eingefügt, der das Problem behob (vielleicht war mein Display zu langsam?). Wegen des begrenzten Zeilenumfangs werde ich insbesondere beim Zielbahnhof auf Orte mit g, j, p, q, y verzichten müssen, da diese Buchstaben unten abgeschnitten werden. Eine Portierung nach u8g2 habe ich erst einmal zurückgestellt.





Zitat

ich wollte ein bisschen weiter nach dem Display schauen, hatte aber das Problem, dass beim Anschließen des Arduino an die Stromversorgung einfach gar nichts passiert ist, es blieb schwarz. Erst nach dem Erneuten Aufspielen des Sketches hat es wieder funktioniert.

Da kam der Tip von railfan2401 gerade recht. Ich habe auch zwischen Pin 7 LOW und Pin 7 HIGH ein Delay eingefügt und damit läuft das Display auch, wenn ich es neu anschließe.

An Pin 7 habe ich nichts angeschlossen. Mein Display hat auch nur 4 Anschlüsse, GND, VCC und die beiden für den Bus.



Vielen Dank euch beiden für diese Erkenntnis, das kann in der Tat mit dem Timing des Displays, des Controllers oder anderen Umständen zu tun haben.


TobiBS  
TobiBS
RegionalExpress (RE)
Beiträge: 99
Registriert am: 10.12.2015
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#53 von TobiBS , 20.05.2018 22:05

Zitat

anbei ein Link für meine Bahnhofstafel:

https://www.ebay.de/itm/192132486341?rmvSB=true

Vielleicht hast Du eine Idee bzw. weit aus mehr Programmiererfahrungen.



Hallo Peter, jetzt weiß ich, was du vorhast. Nun letzlich würde ich vermutlich den bestehenden Sketch quasi multiplizieren, also die fixen Texte und die Lauftexte. Und für die Uhr gibt es bestimmt zig Beispiele wie man das grundsätzlich (Berechnung der Zeiger mit sinus/cosinus) machen kann. Dann würde ich mir natürlich überlegen, ob ich das ganze programmierbar oder wie in dem gezeigten Beispiel von SD-Karte auslesen möchte. Fang doch einfach mal mit statischen Texten an Positionen an, dann schau wie du das ganze aus Arrays auslesen kannst und teile die Routinen entsprechend auf. Oder hast du ein ganz konkretes Problem, was du nicht lösen kannst?


TobiBS  
TobiBS
RegionalExpress (RE)
Beiträge: 99
Registriert am: 10.12.2015
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#54 von TobiBS , 20.05.2018 22:09

Zitat

Das ist echt Hammer, was du dort angestellt ahst (auch was die anderen da noch zusammengebaut haben)


Danke, mich freut auch sehr, wie gut das Ganze von den Foristi hier angenommen wird!

Zitat

Ganze doofe Frage, aber kann man das auch machen, wenn man null-Material und null Ahnung hat?
Was braucht man dafür? PC? Lötkolben?


Mit Null-Material und Null-Ahnung wird es schwierig, aber viel braucht man wirklich nicht:
PC, Arduino, Display. Wenn du die richtige Variante des Displays und des Arduinos hast, dann brauchst du keinen Lötkolben.


TobiBS  
TobiBS
RegionalExpress (RE)
Beiträge: 99
Registriert am: 10.12.2015
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#55 von TobiBS , 20.05.2018 22:09

Zitat

Leute einfach mal lesen,

#5 schickt ihm ne pn.



Danke Bernd! Haben sie mittlerweile auch geschafft.


TobiBS  
TobiBS
RegionalExpress (RE)
Beiträge: 99
Registriert am: 10.12.2015
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#56 von Rothpe , 22.05.2018 12:37

Hallo Tobias,

so etwas habe ich schon fertig:
http://www.bilder-upload.eu/show.php?fil...-1526985261.jpg

Allerdings habe ich das Problem, dass ich nicht der beste Programmierer bin.
Ich kann vorhandene Sketche nur anpassen.
Bisher habe ich dafür noch keine Lösung bzw. bin dabei mich in Arrays und SD Card einzulesen und zu probieren.
Mein Ziel ist es ein file Fahrplan.txt auf SD Card zu speichern (fertig) um dies immer wieder zu aktualisieren.
Von dort will ich den Fahrplan in Arrays einlesen und uhrzeitgesteuert ausgeben.
Dies wird allerdings dauern bis es fertig ist.

Das ist mein größtes Problem

Viele Grüße

Peter


Rothpe  
Rothpe
Regionalbahn (RB)
Beiträge: 27
Registriert am: 11.03.2018
Ort: Bad Marienberg
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#57 von aftpriv , 22.05.2018 15:54

Hallo Forianer

hier ein kleines Video: https://www.youtube.com/watch?v=N--71GUTHbs

Gruß
Alf


Pickel-Bahner seit 1958 / K-Gleis + ZIMO-Decoder (MX633P22/MX645P22)
RocRail & RocNetNode jeweils auf RasPi
Email bezüglich MobaLedLib-Belange: LedLib@yahoo.com


aftpriv  
aftpriv
EuroCity (EC)
Beiträge: 1.279
Registriert am: 03.04.2012
Ort: MKK, Hessischer Spessart
Gleise K-Gleis und Selbsbau-Pickel-Gleis (DC-Gleis mit Mittelleiter ausrüsten)
Spurweite H0
Steuerung Rocrail + Rocnetnode auf Raspi
Stromart Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#58 von TobiBS , 23.05.2018 23:36

Zitat

Hallo Tobias,

so etwas habe ich schon fertig:
http://www.bilder-upload.eu/show.php?fil...-1526985261.jpg

Allerdings habe ich das Problem, dass ich nicht der beste Programmierer bin.


Wow, das sieht doch sehr gut aus, auch mit dem DB-Logo!

Wie du mit der SD-Karte umgehst, weißt du vermutlich schon, sonst gibt es z.B. https://www.arduino.cc/en/Tutorial/ReadWrite und jetzt würde ich mir erstmal überlegen, was du willst. Fürs erste und einfach: Statische Zeilen, die nach vorgegebener Zeit wechseln. Dafür würde ich mir ein Dateiformat überlegen: Z.B.:
Abfahrt<TAB>Zugnummer<TAB>Ziel<TAB>Zeit bis zum Zeilenwechsel<NEWLINE>
Nun liest du in einer while Schleife zeilenweise ein. Das geht mit readLine und dann teilst du die Werte mit getValue am Tab auf. Wenn du dein Display voll hast, wartest du für die Zeit bis zum Zeilenwechsel. Dann zählst du einen Zähler um eins hoch und fängst von vorne an, nur diesmal überspringst du die erste Zeile. So machst du das den ganzen Fahrplan durch.
Ist erstmal total primitiv, sollte aber zum gewünschten Ergebnis führen. Alternativ tatsächlich mit der Zeit etc. zu arbeiten kann man ja immer noch, das muss dann aber etwas fundierter aufgebaut werden.

Hilft das fürs erste?


TobiBS  
TobiBS
RegionalExpress (RE)
Beiträge: 99
Registriert am: 10.12.2015
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#59 von TobiBS , 23.05.2018 23:37

Zitat

Hallo Forianer

hier ein kleines Video: https://www.youtube.com/watch?v=N--71GUTHbs

Gruß
Alf



Sehr schön, wie ich sehe wird das Display fleißig kopiert, jetzt bin ich ja noch gespannt, wer es zuerst in ein Gehäuse an einem Bahnsteig unterbringt!


TobiBS  
TobiBS
RegionalExpress (RE)
Beiträge: 99
Registriert am: 10.12.2015
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#60 von langew , 24.05.2018 12:07

Zitat

Hallo Tobias,

so etwas habe ich schon fertig:
http://www.bilder-upload.eu/show.php?fil...-1526985261.jpg

Allerdings habe ich das Problem, dass ich nicht der beste Programmierer bin.
Ich kann vorhandene Sketche nur anpassen.
Bisher habe ich dafür noch keine Lösung bzw. bin dabei mich in Arrays und SD Card einzulesen und zu probieren.
Mein Ziel ist es ein file Fahrplan.txt auf SD Card zu speichern (fertig) um dies immer wieder zu aktualisieren.
Von dort will ich den Fahrplan in Arrays einlesen und uhrzeitgesteuert ausgeben.
Dies wird allerdings dauern bis es fertig ist.

Das ist mein größtes Problem

Viele Grüße

Peter



Hallo Peter,
wäre es nicht sinnvoller, anstelle der Uhrzeitsteuerung einen Pin des Arduino
als Eingang zum aktualisieren zu definieren.
Dadurch könnte man, an einem Funktionsdecoder angeschlossen, entweder
über die Zentrale händisch oder per Rückmelder vom Zug aus, die passende Anzeige
herstellen.
Grüsse
Wolfgang


langew  
langew
InterRegio (IR)
Beiträge: 161
Registriert am: 31.08.2007
Spurweite H0
Stromart Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#61 von Rothpe , 24.05.2018 12:12

Hallo zusammen,

mit einem ersten Entwurf für das Gehäuse kann ich schon mal dienen:

http://www.bilder-upload.eu/show.php?fil...-1527156695.jpg

http://www.bilder-upload.eu/show.php?fil...-1527157940.jpg

Das Gehäuse wird noch in schwarz gedruckt.

Viele Grüße

Peter


Rothpe  
Rothpe
Regionalbahn (RB)
Beiträge: 27
Registriert am: 11.03.2018
Ort: Bad Marienberg
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#62 von Rothpe , 24.05.2018 12:16

Hallo Wolfgang,

ja die Idee gefällt mir.
Nur ich persönlich benötige mal jemanden der mir das als DAU von Grund auf erklärt und in die Arduino Programmierung ein wenig einführt.
Ich suche wenn möglich Leute hier aus meinem Umkreis oder per Communicator.

Viele Grüße

Peter


Rothpe  
Rothpe
Regionalbahn (RB)
Beiträge: 27
Registriert am: 11.03.2018
Ort: Bad Marienberg
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#63 von Donautal , 25.05.2018 00:33

Peter, aus genau diesem Grund hbe ich das „Franzis Arduino Kit“ gegönnt:
https://www.voelkner.de/products/758294/...ASABEgIGD_D_BwE

Das kommt statt Literatur mit in den Urlaub. Ich bin von „learning by doing“ überzeugt, insbesondere wenn man dabei von einfach zu schwer geführt wird. Ich habe bislang nur die ersten paar Seiten gelesen, aber ich glaube es ist wirklich richitg gut.

Nur so als Hinweis.


Eine 50 Jahre alte, über 30 Jahre abgebaute (und somit nicht bespielte) Anlage wird für die nächste Generation wieder restauriert.
https://stummiforum.de/viewtopic.php?f=15&t=156146

Mein echter Name: Michael - sofern ich es unter einem Posting mal vergesse


 
Donautal
InterCity (IC)
Beiträge: 567
Registriert am: 07.01.2018
Ort: 78532 Tuttlingen
Spurweite H0
Stromart AC, Analog


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#64 von peter01 , 25.05.2018 10:01

Hallo,

ebenfalls interessant ist das Start-Set vom Heise Verlag. Grundlagen Handbuch mit Ardunio Hardware für 24,95€

@https://shop.heise.de/sonstiges/hardware...ardware-arduino

Gruß Peter


Märklin M + C mit Tams MC


peter01  
peter01
S-Bahn (S)
Beiträge: 14
Registriert am: 19.04.2013
Ort: Hannover
Spurweite H0
Stromart AC, Digital, Analog


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#65 von moppe , 25.06.2018 22:24

Hier zwei Bilder von meiner Zugzielanzieger




Ich hab der Programm ein bisschen umgeschrieben, ich hab ein "Array" von 6 unterschiedliche Zuglaüfe und für jeder 30 Sekunden kommt die nächste.

Jeder Zuglauf kommt auf Bilder von "real life" Zugzielanzeiger ich hab mit google gefunden. Jeder hab zeit, zugnummer, wageninformation, zwischenhalt, ziel und einige hab lauftext.

Nächste Projekt ist zwei Anzeiger an einer unsere Bahnhöfe zu einbauen, mit jeder seiner eigenen daten.


Klaus


"Meine" Modellbahn:http://www.modelbaneeuropa.dk
Dänisches Bahnforum: http://www.baneforum.dk
PIKO C4 "Horror Gallery": http://moppe.dk/PIKOC4.html


 
moppe
Trans Europ Express (TEE)
Beiträge: 8.729
Registriert am: 07.08.2011
Homepage: Link
Ort: Norddeusche halbinsel
Gleise Roco, PECO, Märklin/Trix, PIKO,
Spurweite H0, H0e, N, Z
Steuerung Z21, Lenz, MpC Gahler+Ringsmeier, Games on Track/Faller
Stromart AC, DC, Digital, Analog


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#66 von Rothpe , 02.07.2018 14:37

Hallo Klaus,

sieht sehr gut aus.
Magst Du Deinen geänderten Sketch verteilen ?
Hätte Interesse daran.

Viele Grüße

Peter


Rothpe  
Rothpe
Regionalbahn (RB)
Beiträge: 27
Registriert am: 11.03.2018
Ort: Bad Marienberg
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#67 von Donautal , 02.07.2018 14:39

Folgende Rückfragen dazu:
- die Uhrzeit wird beim Start eingegeben oder gibt es da gar einen Shield für die Funkzeit?
- steuerst Du auch noch Sprachausgaben bzw. das Abspielen von WAV-Files damit?


Eine 50 Jahre alte, über 30 Jahre abgebaute (und somit nicht bespielte) Anlage wird für die nächste Generation wieder restauriert.
https://stummiforum.de/viewtopic.php?f=15&t=156146

Mein echter Name: Michael - sofern ich es unter einem Posting mal vergesse


 
Donautal
InterCity (IC)
Beiträge: 567
Registriert am: 07.01.2018
Ort: 78532 Tuttlingen
Spurweite H0
Stromart AC, Analog


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#68 von moppe , 03.07.2018 23:08

Ich hab mehrere fragen um wie meiner Programm ist.

Es hab ohne zweifel, mehrere Fehler, zu mindestens in die Kommentaren......
Als ich Problemen hab mit Umlaut, in der Display zu anzeigen, schreiben ich ohne Umlaut.

Ich hab 2 Neuerungen seit meiner bilder.
Die erste ist das ich der Kontrast setzen kann (Helligkeit) und die ganze anzeige 180 grad drehen, sodass die "dicke" teil der Display, wer kein Bild hab, ist nach oben (unter der Dach der Bahnsteig).

Klaus


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
 
#include &lt;U8glib.h&gt;
 
U8GLIB_SSD1306_128X32_2X u8g(U8G_I2C_OPT_NONE);
 
int count = 0;
unsigned long previousMillis = 0; // Speichern letzte zeit der anziege hat sich ge&#228;ndert
const long interval = 31500; // interval zwischen &#228;nderungen (milliseconds)
int varianten = 7; // anzahl varianten
 

char gleis[5];
 
char uhrzeit[][6]{ // [6] ist anzahl ziffern
"09:34",
"10:04",
"12:53",
"15:21",
"17:02",
"18:30",
"21:45"
};
char zugnummer[][8]{// [8] ist anzahl charakteren
"RB 1521",
"RB 3237",
"EC 172",
"ICE 592",
"IC 602",
"RE 7",
"ICE 651",
};
char ziel[][17]{// [17] ist anzahl charakteren
"Aschaffenburg",
"Plattling",
"Hamburg - Altona",
"Berlin Ostbf",
"Puttgarden",
"Kiel / Flensburg",
"Leipzig Hbf",
};
char zuglauf1[][21]{ //[21] ist anzahl charakteren
"Grossauheim - Kahl,",
"Freising - Moosburg",
"Berlin Hbf - ",
"Fulda - Kassel -",
"Wuppertal - Dortmund",
"Elmshorn - ",
"Fulda - Eisenach"
};
char zuglauf2[][21]{ //[21] ist anzahl charakteren
"- Grosskrotzenburg",
"- Landshut",
"Hamburg Hbf",
"Braunschweig Hbf",
"Bremen - Hamburg",
"Neumunster",
""
};
char wagenstand[][9]{//[9] ist anzahl charakteren
"",
"",
"-222211",
"11111",
" 22111",
" 2121",
"111211"
};
char lauftext[][85]{ //[85] ist anzahl charakteren, mindstens 20 leerzeichnen um die lauftext zu haben
"",
"",
" Verspatung ca 10 Min",
"",
"",
" Zugteilung in Neumunster - Vorne zugteil fahrt bis Flensburg ",
""
};
 

 

const unsigned int lauftextlength = 21;
int offset = 0;
int subset = 0;
char ausgabe[lauftextlength];
 
char incomingByte = 0;
unsigned int incomingBytePosition = 0;
 
enum ReceiveState
{
ReceiveState_Idle,
ReceiveState_Hash,
ReceiveState_Lauftext,
ReceiveState_Gleis,
ReceiveState_Wagenstand,
ReceiveState_Zuglauf1,
ReceiveState_Zuglauf2,
ReceiveState_Ziel,
ReceiveState_Uhrzeit,
ReceiveState_Zugnummer
};
 
ReceiveState currentState = ReceiveState_Idle;
 
enum GleisSeite
{
GleisSeite_Links,
GleisSeite_Rechts
};
 
GleisSeite gleisSeite = GleisSeite_Rechts; // definiert der layout der zugzielanzieger
 

 

 
void draw()
{
u8g.setColorIndex(1);
static int zugdatenSaplte = 0;
if(gleisSeite == GleisSeite_Links)
{
zugdatenSaplte = 100;
}
else if(gleisSeite == GleisSeite_Rechts)
{
zugdatenSaplte = 0;
}
 
u8g.setFont(u8g_font_5x8); // 5x8
u8g.drawStr(zugdatenSaplte, u8g.getFontAscent(), uhrzeit[count]);
 
u8g.setFont(u8g_font_4x6); // 4x6
u8g.drawStr(zugdatenSaplte, 7 + u8g.getFontAscent(), zugnummer[count]);
 
if(strlen(wagenstand[count]) &gt; 0)
{
u8g.setColorIndex(1);
u8g.setFont(u8g_font_4x6); // 4x6
u8g.drawStr(zugdatenSaplte, 15 + u8g.getFontAscent(), "ABCDEFG");
u8g.drawBox(zugdatenSaplte, 21 + u8g.getFontAscent() - 5, strlen(wagenstand[count]) * 4, 6);
u8g.setColorIndex(0);
u8g.drawStr(zugdatenSaplte, 21 + u8g.getFontAscent(), wagenstand[count]);
u8g.setColorIndex(1);
}
 
static int zuglaufSpalte = 30;
if(gleisSeite == GleisSeite_Links)
{
zuglaufSpalte = 20;
}
else if(gleisSeite == GleisSeite_Rechts)
{
zuglaufSpalte = 30;
}
 
//Versp&#228;tungsbox
if(lauftext[count][20] != '')
{
u8g.setColorIndex(1);
u8g.drawBox(zuglaufSpalte, 0, 78, 6);
u8g.setColorIndex(0);
u8g.setFont(u8g_font_4x6); // 4x6
int remaining = strlen(lauftext[count]) - offset;
if(remaining &gt; (lauftextlength - 1))
{
remaining = lauftextlength - 1;
}
memcpy(ausgabe, &amp;lauftext[count][offset], remaining);
ausgabe[remaining] = '';
u8g.drawStr(zuglaufSpalte-subset, 6, ausgabe);
u8g.setColorIndex(1);
}
 
u8g.drawStr(zuglaufSpalte, 12, zuglauf1[count]);

u8g.drawStr(zuglaufSpalte, 19, zuglauf2[count]);

u8g.setFont(u8g_font_tpss);
u8g.drawStr(zuglaufSpalte, 34 + u8g.getFontDescent(), ziel[count]);
 
u8g.setFont(u8g_font_6x13B);
if(gleisSeite == GleisSeite_Links)
{
u8g.drawStr(0, 13, gleis);
}
else if(gleisSeite == GleisSeite_Rechts)
{
u8g.drawStr(128 - (6 * strlen(gleis)), 13, gleis);

}

}
 

 

 
void initializeStrings()
{
String("9").toCharArray(gleis, 5); // Gleisnummer eingeben
}
 

 

 
void setup()
{
initializeStrings();

u8g.begin();
u8g.setContrast(150); // Kontrast eingeben
u8g.setRot180(); // anzeige 180 Grad rotieren.
}
 

 
void loop() {
 
unsigned long currentMillis = millis();
if (currentMillis - previousMillis &gt;= interval) {
previousMillis = currentMillis; // Speichern letzte zeit der anziege hat sich ge&#228;ndert
count = (count+1);
}
if (count&gt;(varianten-1)){
count = 0;
}
// delay(1500);

else{
u8g.firstPage();
do {

draw();

} while( u8g.nextPage() );

subset += 1;
if(subset &gt; 3)
{
offset += 1;
subset = 0;
}

if(offset &gt; strlen(lauftext[count]))
{
offset = 0;
}
}

 
}
 


"Meine" Modellbahn:http://www.modelbaneeuropa.dk
Dänisches Bahnforum: http://www.baneforum.dk
PIKO C4 "Horror Gallery": http://moppe.dk/PIKOC4.html


 
moppe
Trans Europ Express (TEE)
Beiträge: 8.729
Registriert am: 07.08.2011
Homepage: Link
Ort: Norddeusche halbinsel
Gleise Roco, PECO, Märklin/Trix, PIKO,
Spurweite H0, H0e, N, Z
Steuerung Z21, Lenz, MpC Gahler+Ringsmeier, Games on Track/Faller
Stromart AC, DC, Digital, Analog


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#69 von Donautal , 03.07.2018 23:31

Wow, danke, genial.
Mir gefällt die Idee mit der Verspätung sehr.

Als ich früher beruflich noch sehr viel mit der Bahn gereist bin kam es mir vor als wäre der Verspätungstext ein Standard bei jeder Anzeige


Eine 50 Jahre alte, über 30 Jahre abgebaute (und somit nicht bespielte) Anlage wird für die nächste Generation wieder restauriert.
https://stummiforum.de/viewtopic.php?f=15&t=156146

Mein echter Name: Michael - sofern ich es unter einem Posting mal vergesse


 
Donautal
InterCity (IC)
Beiträge: 567
Registriert am: 07.01.2018
Ort: 78532 Tuttlingen
Spurweite H0
Stromart AC, Analog


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#70 von Rothpe , 04.07.2018 11:41

Hallo Klaus,

saubere Lösung und hilft mir ggf bei meiner Bahnhofstafel.
Gefällt mir sehr gut.
Vielen Dank für den Code.


Viele Grüße

Peter


Rothpe  
Rothpe
Regionalbahn (RB)
Beiträge: 27
Registriert am: 11.03.2018
Ort: Bad Marienberg
Spurweite H0
Stromart AC, Digital


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#71 von moppe , 04.07.2018 22:29

Und nun Version 13, wo "umlaut-problem" ist gelöst


Klaus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
 
// Zugzielanzeiger f&#252;r Bahnsteige, KDM Version 13
//
//In Stummiforum (https://stummiforum.de/viewtopic.php?f=21&amp;t=131472) hat Tobias siener Sketch teilt.
//
//Ich hab mehrere &#228;nderungen hingef&#252;hrt und hier ist meiner version "Zugzielanzeiger f&#252;r den Bahnsteig mit Arduino"
//
//Noten:
//
//
//Umlaute ersetzten laut folgender Chiffre:
//&#228; = xF4
//&#246; = xF5
//&#252; = xFC
//&#223; = xDF
//&#196; = xC4
//&#214; = xD6
//&#220; = xDC
//W&#252;rzburg ist daher WxFCrzburg
//Versp&#228;tung ist daher VerspxF4tung
 

 
#include &lt;U8glib.h&gt;
 
U8GLIB_SSD1306_128X32_2X u8g(U8G_I2C_OPT_NONE);
 
int count = 0;
unsigned long previousMillis = 0; // Speichern letzte zeit der anziege hat sich ge&#228;ndert
const long interval = 31500; // interval zwischen &#228;nderungen (milliseconds)
int varianten = 7; // anzahl varianten
 

char gleis[5];
 
char uhrzeit[][6]{ // [6] ist anzahl ziffern
"09:34",
"10:04",
"12:53",
"15:21",
"17:02",
"18:30",
"21:45"
};
char zugnummer[][8]{// [8] ist anzahl charakteren
"RB 1521",
"RB 3237",
"EC 172",
"ICE 592",
"IC 602",
"RE 7",
"ICE 651",
};
char ziel[][17]{// [17] ist anzahl charakteren
"Aschaffenburg",
"Plattling",
"Hamburg - Altona",
"Berlin Ostbf",
"Puttgarden",
"Kiel / Flensburg",
"Leipzig Hbf",
};
char zuglauf1[][21]{ //[21] ist anzahl charakteren
"Grossauheim - Kahl,",
"Freising - Moosburg",
"Berlin Hbf - ",
"Fulda - Kassel -",
"Wuppertal - Dortmund",
"Elmshorn - ",
"Fulda - Eisenach"
};
char zuglauf2[][21]{ //[21] ist anzahl charakteren
"- Grosskrotzenburg",
"- Landshut",
"Hamburg Hbf",
"Braunschweig Hbf",
"Bremen - Hamburg",
"NexFCmunster",
""
};
char wagenstand[][9]{//[9] ist anzahl charakteren
"",
"",
"-222211",
"11111",
" 22111",
" 2121",
"111211"
};
char lauftext[][85]{ //[85] ist anzahl charakteren, mindstens 20 leerzeichnen um die lauftext zu haben
"",
"",
" VerspxF4tung ca 10 Min",
"",
"",
" Zugteilung in NexFCmunster - Vorne zugteil fahrt bis Flensburg ",
""
};
 

 

const unsigned int lauftextlength = 21;
int offset = 0;
int subset = 0;
char ausgabe[lauftextlength];
 
char incomingByte = 0;
unsigned int incomingBytePosition = 0;
 
enum ReceiveState
{
ReceiveState_Idle,
ReceiveState_Hash,
ReceiveState_Lauftext,
ReceiveState_Gleis,
ReceiveState_Wagenstand,
ReceiveState_Zuglauf1,
ReceiveState_Zuglauf2,
ReceiveState_Ziel,
ReceiveState_Uhrzeit,
ReceiveState_Zugnummer
};
 
ReceiveState currentState = ReceiveState_Idle;
 
enum GleisSeite
{
GleisSeite_Links,
GleisSeite_Rechts
};
 
GleisSeite gleisSeite = GleisSeite_Rechts; // definiert der layout der zugzielanzieger
 

 

 
void draw()
{
u8g.setColorIndex(1);
static int zugdatenSaplte = 0;
if(gleisSeite == GleisSeite_Links)
{
zugdatenSaplte = 100;
}
else if(gleisSeite == GleisSeite_Rechts)
{
zugdatenSaplte = 0;
}
 
u8g.setFont(u8g_font_5x8); // 5x8
u8g.drawStr(zugdatenSaplte, u8g.getFontAscent(), uhrzeit[count]);
 
u8g.setFont(u8g_font_4x6); // 4x6
u8g.drawStr(zugdatenSaplte, 7 + u8g.getFontAscent(), zugnummer[count]);
 
if(strlen(wagenstand[count]) &gt; 0)
{
u8g.setColorIndex(1);
u8g.setFont(u8g_font_4x6); // 4x6
u8g.drawStr(zugdatenSaplte, 15 + u8g.getFontAscent(), "ABCDEFG");
u8g.drawBox(zugdatenSaplte, 21 + u8g.getFontAscent() - 5, strlen(wagenstand[count]) * 4, 6);
u8g.setColorIndex(0);
u8g.drawStr(zugdatenSaplte, 21 + u8g.getFontAscent(), wagenstand[count]);
u8g.setColorIndex(1);
}
 
static int zuglaufSpalte = 30;
if(gleisSeite == GleisSeite_Links)
{
zuglaufSpalte = 20;
}
else if(gleisSeite == GleisSeite_Rechts)
{
zuglaufSpalte = 30;
}
 
//Versp&#228;tungsbox
if(lauftext[count][20] != '')
{
u8g.setColorIndex(1);
u8g.drawBox(zuglaufSpalte, 0, 78, 6);
u8g.setColorIndex(0);
u8g.setFont(u8g_font_4x6); // 4x6
int remaining = strlen(lauftext[count]) - offset;
if(remaining &gt; (lauftextlength - 1))
{
remaining = lauftextlength - 1;
}
memcpy(ausgabe, &amp;lauftext[count][offset], remaining);
ausgabe[remaining] = '';
u8g.drawStr(zuglaufSpalte-subset, 6, ausgabe);
u8g.setColorIndex(1);
}
 
u8g.drawStr(zuglaufSpalte, 12, zuglauf1[count]);

u8g.drawStr(zuglaufSpalte, 19, zuglauf2[count]);

u8g.setFont(u8g_font_tpss);
u8g.drawStr(zuglaufSpalte, 34 + u8g.getFontDescent(), ziel[count]);
 
u8g.setFont(u8g_font_6x13B);
if(gleisSeite == GleisSeite_Links)
{
u8g.drawStr(0, 13, gleis);
}
else if(gleisSeite == GleisSeite_Rechts)
{
u8g.drawStr(128 - (6 * strlen(gleis)), 13, gleis);

}

}
 

 

 
void initializeStrings()
{
String("9").toCharArray(gleis, 5); // Gleisnummer eigeben
}
 

 

 
void setup()
{
initializeStrings();

u8g.begin();
u8g.setContrast(150); // Kontrast eingeben
u8g.setRot180(); // anzeige 180 grad rotieren.
}
 

 
void loop() {
 
unsigned long currentMillis = millis();
if (currentMillis - previousMillis &gt;= interval) {
previousMillis = currentMillis; // Speichern letzte zeit der anziege hat sich ge&#228;ndert
count = (count+1);
}
if (count&gt;(varianten-1)){
count = 0;
}
// delay(1500);

else{
u8g.firstPage();
do {

draw();

} while( u8g.nextPage() );

subset += 1;
if(subset &gt; 3)
{
offset += 1;
subset = 0;
}

if(offset &gt; strlen(lauftext[count]))
{
offset = 0;
}
}

 
}
 


"Meine" Modellbahn:http://www.modelbaneeuropa.dk
Dänisches Bahnforum: http://www.baneforum.dk
PIKO C4 "Horror Gallery": http://moppe.dk/PIKOC4.html


 
moppe
Trans Europ Express (TEE)
Beiträge: 8.729
Registriert am: 07.08.2011
Homepage: Link
Ort: Norddeusche halbinsel
Gleise Roco, PECO, Märklin/Trix, PIKO,
Spurweite H0, H0e, N, Z
Steuerung Z21, Lenz, MpC Gahler+Ringsmeier, Games on Track/Faller
Stromart AC, DC, Digital, Analog


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#72 von bahnfreek , 18.10.2018 13:48

Hallo zusammen,

Besten dank für eure Vorarbeiten! Respekt für die Ideen!

Ich bin erst ganz am Anfang und bisher in der Planung für eine Anlage. Heißt ich habe noch keine Erfahrungen und keine Anlage . Bisher war geplant die Anlage via Rocrail und der Z21 zu steuern. Die Idee mir der Anzeige finde ich richtig genial und würde dies direkt mit einplanen.

Meine Idee die mir so im Kopf rumschwirrt: Wenn ein Zug im Block angemeldet wird, sendet Rocrail ein Befehlt, den das Board ( https://www.amazon.de/gp/product/B074Q2W...0?ie=UTF8&psc=1 ) via Wlan empfängt.

Es soll für jeden Bahnsteig ein extra board geben welches genau das selbe machen soll. Hat schon jemand erfahrungen mit so etwas? Besonders dem Senden von Datenpaketen von Rocrail an das Board? Vielleicht habe ich das auch ins falsche Forum geschrieben, dann seht es mir bitte nach

Gruß
Simon


Plus auf Masse das knallt klasse...


 
bahnfreek
Beiträge: 6
Registriert am: 18.10.2018


RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#73 von ich_der_n-spurer ( gelöscht ) , 14.11.2018 16:59

Hallo liebe User,

ich habe im Moment den Bau einer modellbahn Spur-N begonnen. Die Bahnhofsanzeige mit den 0,91" Oled Displays sieht klasse aus. Nun habe ich freundlicher Weise von MOPPE die letzte Fassung mit serieller Datenübertragung erhalten, wie aber bekommt man die Daten auf die einzelnen Display? Mein Bahnhof hat 6 Gleise, jedes Gleis soll ein Atmega16 bzw. 32 Nano erhalten, welches dann 2 Displays paralell angesteuert wird. Das Bussystem für die ganze Anlage sollen maximal 4x RS 485 sein. Nun zu meiner Frage, was muss bei dem Steuerungs PC für eine Software installiert sein um die Daten eines Zuges Gleisgenau anzeigen zu lassen, vor dem Hintergrund das auch die komplette Steuerung der Anlage ohne Lokdekoder einbauten auskommen muss. Hatte erst auch einmal über SD-Karte 1MB als Datenspeicher gedacht, wo Zuggattung zufällige erzeugung Nummer, Zwischenhalte, Endstationen, Verspätungen, usw. als Textbausteine gespeichert sind und z.B. über HEX Zahlen entsprechend abrufbar wären. Als Anlage ist die entsprechende ZIP- datei angehangen, da ich noch nicht weiß, wie ich alles im einzelnen machen kann.
Ich hoffe Ihr könnt mir helfen, da Elektronik nicht das grosse Problem ist, aber die Programmierung schon.
Ich wollte schon in den 80er Jahre eine Anlage bauen und habe eine große Anzahl an Elektronikbüchern aus dieser zeit, aber statt riesige IC Gräber zu bauen (Manche platinen haben 15 + mehr IC´s), wollte ich die logischen Verknüpfungen und steuerungselemente mir Arduino´s aufbauen und die Leistungselektronik aus den 80ern nutzen.
TIC 206D, TIP 122 + 127; ULN 2803, LM 324, Schieberegister 74165 + 74595.
Weichen werden mit schaltimpulsen und entsprechender rückmeldung über Schiebregister ausgelöst und ausgewertet.
Die Besetzmelder und Freigabe der Blöcke über TIC 206D die auch die Wechselspannung für die weichen schalten. Die Fahrspannung wird reguliert über PWM Signale der jeweiligen Fahrregler, das bedeutet das 4Blöcke jeweils bis zu 5 Fahrregler zugeordnet werden können. Wichtig im Bahnhofsbereich um so viel wie möglich an Lok´s bzw. Züge steuern zu können. Rangierfahrten 1 + 2, Nebenstrecke, strassenbahn zur stadt, Strassenbahn von stadt.
Alleine im Bahnhofsbereich sind mehr als 130 Hallsensoren verbaut um die Züge engmaschig überwachen zu können und um es egal zu machen, ob die Lok vorne oder hinten sich befindet, jeder zug soll an einer bestimmten stelle IMMER zum stehen kommen.

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.

Ich würde mich freuen, von Euch zu hören
Fredddy

Dateianlage:
Sie haben nicht die nötigen Rechte, um die angehängten Dateien zu sehen

ich_der_n-spurer

RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#74 von chaoskasi ( gelöscht ) , 03.12.2018 15:00

Hallo Tobias

Erstmals ein riesen Dankeschön für die Datei.
Ich habe mal eine Frage wie ist das wenn man 2 Display an einen Nano anschießen möchte an welchen Ausgänge geht man da dran und was muss ich da im Sketch eintragen.
Das gibt bestimmt ein totales Kabel Wirrwarr aus der Anlage .Ich möchte gerne 2 Displays auf ein Gleis bauen. Ich habe 1- 4 Bahnhofsgleise und wird wieder noch ein Highlight auf meiner Anlage sein.
Dazu möchte ich auch noch ein 1,8 Zoll Display als Info Tafel auf meinen Bahnhof integrieren.
So wie ich das im Forum gelesen habe gibt es da bestimmt noch jede Menge Dateien, aber ich denke das du die bestimmt hast aber alles ein nach den anderen.

Gruß
Thomas


chaoskasi

RE: Zugzielanzeiger für den Bahnsteig mit Arduino

#75 von TobiBS , 03.12.2018 19:52

Zitat

Es soll für jeden Bahnsteig ein extra board geben welches genau das selbe machen soll. Hat schon jemand erfahrungen mit so etwas? Besonders dem Senden von Datenpaketen von Rocrail an das Board? Vielleicht habe ich das auch ins falsche Forum geschrieben, dann seht es mir bitte nach


Also alles was ich dir hierzu sagen kann ist: Wenn du es aus Rocrail z.B. via UDP oder so schicken kannst, dann kannst du es auch auf einem Board mit LAN-Zugang wieder empfangen und verarbeiten. Da stecken aber noch ein paar Hürden drin, die man mit den Sketches hier noch überwinden muss.


TobiBS  
TobiBS
RegionalExpress (RE)
Beiträge: 99
Registriert am: 10.12.2015
Spurweite H0
Stromart AC, Digital


   

Decoderproblem bei Piko BR151

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