Destinationsskilt på banegård

Her kan du debattere og stille spørgsmål til alt om elektronik og digitaldrift på modeljernbanen. Skal du have hjælp til en dekoder eller driller signalet? Stil dit spørsmål her.
moppe
Lokomotivfører
Indlæg: 4480
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: Destinationsskilt på banegård

Indlæg af moppe »

sarby skrev: 07 aug 2018, 08:33 Tak for din kode, men desværre er der fejl i koden!
Koden virker på min Arduino Uno. Men jeg prøver lige igen i eftermiddag.

Har du hentet U8glib.h og installeret det?


Klaus
moppe
Lokomotivfører
Indlæg: 4480
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: Destinationsskilt på banegård

Indlæg af moppe »

moppe skrev: 07 aug 2018, 10:48 Men jeg prøver lige igen i eftermiddag.
Kopierede alt ind fra det jeg har postet, det virker på min Arduino Uno.



Klaus
sarby
Lokomotivfører
Indlæg: 245
Tilmeldt: 03 jan 2017, 16:52
Digital: Ja
Scale: H0 - 3-rail
Skinnesystem: Märklin C

Re: Destinationsskilt på banegård

Indlæg af sarby »

Hej.

Ja, det mener jeg, da Arduino kører med andre programmer?!

Måske er programmet sat til en anden port?

Du skriver at jeg skal hente:
Har du hentet U8glib.h og installeret det?
Det har jeg ikke - jeg skal finde det og prøve at installere det

MVH
John
moppe
Lokomotivfører
Indlæg: 4480
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: Destinationsskilt på banegård

Indlæg af moppe »

sarby skrev: 07 aug 2018, 20:28 Det har jeg ikke - jeg skal finde det og prøve at installere det
Så skal det nok virke....


Klaus
moppe
Lokomotivfører
Indlæg: 4480
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: Destinationsskilt på banegård

Indlæg af moppe »

Har fået en forespørgsel på danske karakterer, og fundet ud af, hvordan man får dem med.

Så her er version 14 af displayet:

Kode: Vælg alt

// Zugzielanzeiger für Bahnsteige, KDM Version 14
// 
//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:
//ä = \xE4
//ö = \xF6
//ü = \xFC
//ß = \xDF
//Ä = \xC4
//Ö = \xD6
//Ü = \xDC
//Würzburg ist daher W\xFCrzburg
//Verspätung ist daher Versp\xF4tung
//Dänisch:
//æ = \xE6
//ø = \xF8
//å = \xE5
//Æ = \xC6
//Ø = \xD8
//Å = \xC5
//Alle charakteren at: http://www.codetable.net/unicodecharacters


#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",
  "Ne\xFCmunster",
  ""
  };
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
  "", 
  "",
  "                    Versp\xF4tung ca 10 Min", 
  "",
  "",
  "                    Zugteilung in Ne\xFCmunster - 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] != '\0')
  {
    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] = '\0';
    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;
  }
}
  

}

Klaus
Fizban_
Stationsbetjent
Indlæg: 43
Tilmeldt: 29 mar 2013, 17:48
Digital: Ja
Scale: H0 - 2-rail

Re: Destinationsskilt på banegård

Indlæg af Fizban_ »

hejsa. klaus

Er den eller kan man lave så den skifter på en en knap eller en knap til hver "billede"
//Søren

moppe
Lokomotivfører
Indlæg: 4480
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: Destinationsskilt på banegård

Indlæg af moppe »

Det tror jeg godt at man kan gøre.

Skal jeg prøve at lave det?

Klaus

Fizban_
Stationsbetjent
Indlæg: 43
Tilmeldt: 29 mar 2013, 17:48
Digital: Ja
Scale: H0 - 2-rail

Re: Destinationsskilt på banegård

Indlæg af Fizban_ »

:-)

Det kunne da værer godt.. og især hvis den kan blive på forskellige knapper,
i det, det så kan smides sammen med en dekoder, så man selv kan styre hvad der komme på displayet.
:-)
Jeg ved ikke hvor mange man kan have 8, 12 eller 16 mulige, vil jo gå op med dekoder systemet da der jo er 4 eller 8 normalt ,
Samtid med at man kan styre hvad der skal vises, vil man jo kunne kombiner det med højtaler udkald der passer til det på skærmen.

//Søren

moppe
Lokomotivfører
Indlæg: 4480
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: Destinationsskilt på banegård

Indlæg af moppe »

Groft sagt, ville det smarteste nok være at bygge en DCC dekoder ind i programmet.

Meeeeeen, det går vidst over mine evner lige nu.

Jeg vil give det et skud med kontakter (ikke trykknapper).

Klaus

Kresten
Stationsforstander
Indlæg: 94
Tilmeldt: 18 mar 2017, 07:06
Digital: Ja
Scale: H0 - 3-rail
Skinnesystem: Märklin C K

Re: Destinationsskilt på banegård

Indlæg af Kresten »

Det ser godt nok godt ud :-)

Tænk, hvad det kunne blive til med Railcom-tilbagemelding, så skiltet automatisk skiftede til det tog, der ankommer eller holder på perronen for afgang...

VH Kresten

Besvar