Side 2 af 3

Re: Destinationsskilt på banegård

: 07 aug 2018, 10:48
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

Re: Destinationsskilt på banegård

: 07 aug 2018, 16:46
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

Re: Destinationsskilt på banegård

: 07 aug 2018, 20:28
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

Re: Destinationsskilt på banegård

: 07 aug 2018, 20:39
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

Re: Destinationsskilt på banegård

: 21 sep 2018, 12:12
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

Re: Destinationsskilt på banegård

: 29 mar 2021, 19:56
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


Re: Destinationsskilt på banegård

: 29 mar 2021, 22:13
af moppe

Det tror jeg godt at man kan gøre.

Skal jeg prøve at lave det?

Klaus


Re: Destinationsskilt på banegård

: 30 mar 2021, 20:16
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


Re: Destinationsskilt på banegård

: 03 apr 2021, 01:23
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


Re: Destinationsskilt på banegård

: 05 apr 2021, 17:39
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