Leute einfach mal lesen,
#5 schickt ihm ne pn.
LG
Bernd
Leute einfach mal lesen,
#5 schickt ihm ne pn.
LG
Bernd
Beiträge: | 172 |
Registriert am: | 28.10.2009 |
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.
Beiträge: | 99 |
Registriert am: | 10.12.2015 |
Spurweite | H0 |
Stromart | AC, Digital |
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?
Beiträge: | 99 |
Registriert am: | 10.12.2015 |
Spurweite | H0 |
Stromart | AC, Digital |
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.
Beiträge: | 99 |
Registriert am: | 10.12.2015 |
Spurweite | H0 |
Stromart | AC, Digital |
Zitat
Leute einfach mal lesen,
#5 schickt ihm ne pn.
Danke Bernd! Haben sie mittlerweile auch geschafft.
Beiträge: | 99 |
Registriert am: | 10.12.2015 |
Spurweite | H0 |
Stromart | AC, Digital |
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
Beiträge: | 27 |
Registriert am: | 11.03.2018 |
Ort: | Bad Marienberg |
Spurweite | H0 |
Stromart | AC, Digital |
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
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 |
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?
Beiträge: | 99 |
Registriert am: | 10.12.2015 |
Spurweite | H0 |
Stromart | AC, Digital |
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!
Beiträge: | 99 |
Registriert am: | 10.12.2015 |
Spurweite | H0 |
Stromart | AC, Digital |
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
Beiträge: | 166 |
Registriert am: | 31.08.2007 |
Spurweite | H0 |
Stromart | Digital |
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
Beiträge: | 27 |
Registriert am: | 11.03.2018 |
Ort: | Bad Marienberg |
Spurweite | H0 |
Stromart | AC, Digital |
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
Beiträge: | 27 |
Registriert am: | 11.03.2018 |
Ort: | Bad Marienberg |
Spurweite | H0 |
Stromart | AC, Digital |
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
Beiträge: | 567 |
Registriert am: | 07.01.2018 |
Ort: | 78532 Tuttlingen |
Spurweite | H0 |
Stromart | AC, Analog |
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
Beiträge: | 14 |
Registriert am: | 19.04.2013 |
Ort: | Hannover |
Spurweite | H0 |
Stromart | AC, Digital, Analog |
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
Hallo Klaus,
sieht sehr gut aus.
Magst Du Deinen geänderten Sketch verteilen ?
Hätte Interesse daran.
Viele Grüße
Peter
Beiträge: | 27 |
Registriert am: | 11.03.2018 |
Ort: | Bad Marienberg |
Spurweite | H0 |
Stromart | AC, Digital |
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
Beiträge: | 567 |
Registriert am: | 07.01.2018 |
Ort: | 78532 Tuttlingen |
Spurweite | H0 |
Stromart | AC, Analog |
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
#include <U8glib.h>
U8GLIB_SSD1306_128X32_2X u8g(U8G_I2C_OPT_NONE);
int count = 0;
unsigned long previousMillis = 0; // Speichern letzte zeit der anziege hat sich geändert
const long interval = 31500; // interval zwischen ä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]) > 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ä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 > (lauftextlength - 1))
{
remaining = lauftextlength - 1;
}
memcpy(ausgabe, &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 >= interval) {
previousMillis = currentMillis; // Speichern letzte zeit der anziege hat sich geändert
count = (count+1);
}
if (count>(varianten-1)){
count = 0;
}
// delay(1500);
else{
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
subset += 1;
if(subset > 3)
{
offset += 1;
subset = 0;
}
if(offset > 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
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
Beiträge: | 567 |
Registriert am: | 07.01.2018 |
Ort: | 78532 Tuttlingen |
Spurweite | H0 |
Stromart | AC, Analog |
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
Beiträge: | 27 |
Registriert am: | 11.03.2018 |
Ort: | Bad Marienberg |
Spurweite | H0 |
Stromart | AC, Digital |
Und nun Version 13, wo "umlaut-problem" ist gelöst
Klaus
// Zugzielanzeiger für Bahnsteige, KDM Version 13
//
//In Stummiforum (https://stummiforum.de/viewtopic.php?f=21&t=131472) hat Tobias siener Sketch teilt.
//
//Ich hab mehrere änderungen hingeführt und hier ist meiner version "Zugzielanzeiger für den Bahnsteig mit Arduino"
//
//Noten:
//
//
//Umlaute ersetzten laut folgender Chiffre:
//ä = xF4
//ö = xF5
//ü = xFC
//ß = xDF
//Ä = xC4
//Ö = xD6
//Ü = xDC
//Würzburg ist daher WxFCrzburg
//Verspätung ist daher VerspxF4tung
#include <U8glib.h>
U8GLIB_SSD1306_128X32_2X u8g(U8G_I2C_OPT_NONE);
int count = 0;
unsigned long previousMillis = 0; // Speichern letzte zeit der anziege hat sich geändert
const long interval = 31500; // interval zwischen ä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]) > 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ä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 > (lauftextlength - 1))
{
remaining = lauftextlength - 1;
}
memcpy(ausgabe, &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 >= interval) {
previousMillis = currentMillis; // Speichern letzte zeit der anziege hat sich geändert
count = (count+1);
}
if (count>(varianten-1)){
count = 0;
}
// delay(1500);
else{
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
subset += 1;
if(subset > 3)
{
offset += 1;
subset = 0;
}
if(offset > 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
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...
Beiträge: | 6 |
Registriert am: | 18.10.2018 |
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
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
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.
Beiträge: | 99 |
Registriert am: | 10.12.2015 |
Spurweite | H0 |
Stromart | AC, Digital |
Einfach ein eigenes Forum erstellen |