Modellbahn - Bahnübergang - Lichtschranke

Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Danke.
Auch ein schönes Wochenende.
Franz
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von e69-fan »

Hallo Franz,

ich habe eine zweite Lichtschranke gesetzt und die Gleisbelegtmeldungen herausgenommen.
  • Zug passiert Lichtschranke01
  • Warnblinker wird ausgelöst
  • LS_Laufzeit01 startet
  • während der Laufzeit01 muss der Zug die Lichtschranke02 passieren
  • Lichtschranke02 startet die Laufzeit01 erneut
  • der Zug verlässt den Bereich von Lichtschranke02
  • nach Ablauf von Laufzeit01 schaltet der Warnblinker aus
Von der Gegenrichtung läuft es umgekehrt ab.

Ich muss jetzt noch die Reichweite der IR vergrößern, dann könnte ich mehrere parallele Gleise erfassen.

Was meinst Du dazu ???

Code: Alles auswählen

#include <MobaTools.h>

// Festlegen der Ports
const int Blinker1P  =  6;  // Die beiden Led's des
const int Blinker2P  =  7;  // Wechselblinkers.

// ----------- Lichtschranke aktivieren -------------------------------------------------

const byte LS_Relais01     = 2;             // Pin 2 ist für Relais Lichtschranke

const byte Lichtschranke01 = 3;             // Pin 3 ist für Lichtschranke01

const byte Lichtschranke02 = 4;             // Pin 4 ist für Lichtschranke02

unsigned long LS_Laufzeit01 = 0;            // Lichtschranke01 Ablauf Zeit
const unsigned long LS_Pausezeit01 = 3000;  // Lichtschranke01 Prüfzeit Überbrückung 3 Sekunden (3000)
unsigned long milli_aktuell = 0;

byte LS01_Status01 = 0;
byte LS02_Status01 = 0;
// --------------------------------------------------------------------------------------
boolean SchalterP = false;  // Blinkschaltung on/off

boolean Gleis1    = false;  // Gleis 1 belegt/frei
boolean Gleis2    = false;  // Gleis 2 belegt/frei
boolean Gleis3    = false;  // Gleis 3 belegt/frei

// Weitere Konstante
const int wbZykl = 1100;    // Zykluszeit des Wechselblinkers
const int wbSoft = 400;     // Auf/Abblendzeit der Lampen

// Zustand des Wechselblinker

byte wblZustand = 0;        // In dieser Variable wird hinterlegt, in welchem Zustand
                            // sich der Wechselblinker gerade befindet
#define   WBL_AUS     0     // beide Lampen sind aus
#define   WBL_START   1     // Startphase: beide Lampen sind an
#define   WBL_BLINKT  2     // Die Lampen blinken normal im Wechsel

byte ledState;              // HIGH : Blinker1 ist an, LOW Blinker2 ist an

MoToSoftLed Blinker1;
MoToSoftLed Blinker2;

MoToTimer BlinkUhr;
//--------------------------------------------------------------SETUP----------------------
void setup() {

  digitalWrite (LS_Relais01, HIGH); // Relaisausgang beim Start "aus"
  pinMode(LS_Relais01, OUTPUT);
  
  pinMode(Lichtschranke01, INPUT);
  pinMode(Lichtschranke02, INPUT);
 
  Blinker1.attach(Blinker1P);     // die Ausgänge werden automatisch auf OUTPUT gesetzt
  Blinker1.riseTime( wbSoft );    // Aufblendzeit in ms

  Blinker2.attach(Blinker2P);
  Blinker2.riseTime( wbSoft );    // Aufblendzeit in ms
}


//--------------------------------------------------------------LOOP-----------------------
void loop() {
  
  // ---Millis übergeben----------------------------
  milli_aktuell = millis();
  
  // ---Lichtschranke01 Kontrolle-------------------
  LS01_Status01 = digitalRead(Lichtschranke01);
  
  if (LS01_Status01 == LOW) {
    digitalWrite (LS_Relais01, LOW);                        // Relais01 auf Pin2 einschalten
    Gleis1 = true;
    LS_Laufzeit01 =  milli_aktuell;
  }
  else {
    
    if (milli_aktuell - LS_Laufzeit01 >= LS_Pausezeit01)    // Überbrückungszeit abgelaufen ?
    {
      digitalWrite (LS_Relais01, HIGH);                     // Relais01 auf Pin2 ausschalten
      Gleis1 = false;
    }
  }
//---Lichtschranke01 Ende------------------------

// ---Millis übergeben----------------------------
  milli_aktuell = millis();
  
  
  // ---Lichtschranke02 Kontrolle-------------------
  LS02_Status01 = digitalRead(Lichtschranke02);
  
  if (LS02_Status01 == LOW) {
    digitalWrite (LS_Relais01, LOW);                        // Relais01 auf Pin2 einschalten
    Gleis1 = true;
    LS_Laufzeit01 =  milli_aktuell;
  }
  else {
    
    if (milli_aktuell - LS_Laufzeit01 >= LS_Pausezeit01)    // Überbrückungszeit abgelaufen ?
    {
      digitalWrite (LS_Relais01, HIGH);                     // Relais01 auf Pin2 ausschalten
      Gleis1 = false;
    }
  }
//---Lichtschranke02 Ende------------------------
 
  SchalterP = Gleis1 || Gleis2  || Gleis3 ;           // Blinken, wenn Gleis 1 oder Gleis 2 oder Gleis 3 belegt

  // Wechselblinker
  
  switch (wblZustand) {
    case WBL_AUS:
      // Beide Lampen sind aus, warten auf einschalten
      if ( SchalterP == true && BlinkUhr.running() == false ) {
        // Beide Leds einschalten, Timer für gemeinsames Startleuchten
        Blinker1.on();
        Blinker2.on();
        BlinkUhr.setTime( wbSoft );
        wblZustand = WBL_START;
      }
      break;
      
    case WBL_START:
      // Startphase: Nach Zeitablauf erste Led wieder aus
      if ( BlinkUhr.running() == false ) {
        // Die Startzeit ist abgelaufen, Übergang zur normalen Blinkphase
        ledState = HIGH;
        Blinker2.off();
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        wblZustand = WBL_BLINKT;
      }
      break;
      
    case WBL_BLINKT:
      if ( BlinkUhr.running() == false ) {
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        if ( ledState == LOW ) {
          Blinker1.on();
          Blinker2.off();
          ledState = HIGH;
        } else {
          ledState = LOW;
          Blinker2.on();
          Blinker1.off();
        }
      }
      if ( SchalterP == false ) {
        // Wechselblinker abschalten
        Blinker1.off();
        Blinker2.off();
        wblZustand = WBL_AUS;
        BlinkUhr.setTime(wbZykl);   // minimale 'Aus' zeit des Blinkers
        //( schützt vor Schalterprellen )
      }
      break;

  } // Ende switch Wechselblinker
}
Grüße
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Bei dem Lichtschranken Programm, das ich dazu gemacht habe, braucht man nur eine IR-Schranke. Die bleibt an, solange der Zug daran vorbei fährt und man kann dann noch eine Zeit einstellen, in der die Schranke weiterhin zu bleibt. Oder du benutzt das was dein Programm mit bringt. Das hat aber dann nichts mit dem Programmteil von mir zu tun. Die einzige Verbindung zwischen meinem zugefügten Programm und dem Programm das du hattest ist, dass wenn mein IR Sensor betätigt wird, auch deine Wechselblinkanlage läuft.

Also wenn du den Teil benutzt, der für jedes Gleis zwei IR-Sensoren braucht, (Einfahrt - Ausfahrt), dann könnten wir meinen Teil wieder rauslöschen, dass du da nichts verwechselst.

Franz

Ich habe noch eine Kleinigkeit geändert, dass die beiden Systeme nebeneinander funktionieren. Das war ein Fehler bei der Blinker-Ausschaltung. Hier ist nochmal das aktelle Programm. Da kam noch der "MerkerLS1" dazu.

Code: Alles auswählen

#include <MobaTools.h>
/* Demo: Wechselblinker modifiziert von Bodo

   Plus IR Lichtschranke mit Relais
   Dieses Demo ist etwas komplexer und zeigt die Realisierung eines
   Wechselblinker, der per Schalter ein- und ausgeschaltet wird.
   Wie bei Wechselblinkern an einem BÜ üblich, starten die beiden Lampen
   gleichzeitig, um dann im Wechseltakt zu blinken
   Dieses Demo verwendet auch die 'Eieruhr' um Zeitverzögerungen zu realisieren
   Die 'Eieruhr' ist ein Zeitzähler, der aufgezogen werden kann und im loop kann
   abgefragt werden, ob er abgelaufen ist.
*/

// Festlegen der Ports
const int Blinker1P  =  6;  // Die beiden Led's des
const int Blinker2P  =  7;  // Wechselblinkers.

const int Gleis1onP  =  8;  // Gleis 1 Start-Kontakt
const int Gleis1offP =  9;  // Gleis 1 Ende--Kontakt

const int Gleis2onP  = 10;  // Gleis 2 Start-Kontakt
const int Gleis2offP = 11;  // Gleis 2 Ende--Kontakt

const int Gleis3onP  =  4;  // Gleis 3 Start-Kontakt
const int Gleis3offP =  5;  // Gleis 3 Ende--Kontakt
// ----------- Lichtschranke aktivieren -------------------------------------------------
const byte Lichtschranke01 = 3; // Pin 3 ist für Lichtschranke
const byte LS_Relais01 = 2; // Pin 2 ist für Relais Lichtschranke
byte MerkerLS1 = 0;
unsigned long LS_Laufzeit01 = 0; // Lichtschranke01 Ablauf Zeit
const unsigned long LS_Pausezeit01 = 3000; // Lichtschranke01 Prüfzeit Überbrückung 3 Sek.
unsigned long milli_aktuell = 0;
byte LS_Status01 = 0;
// --------------------------------------------------------------------------------------
boolean SchalterP = false;  // Blinkschaltung on/off

boolean Gleis1    = false;  // Gleis 1 belegt/frei
boolean Gleis2    = false;  // Gleis 2 belegt/frei
boolean Gleis3    = false;  // Gleis 3 belegt/frei

// Weitere Konstante
const int wbZykl = 1100;    // Zykluszeit des Wechselblinkers
const int wbSoft = 400;     // Auf/Abblendzeit der Lampen

// Zustand des Wechselblinker
byte wblZustand = 0;        // In dieser Variable wird hinterlegt, in welchem Zustand
// sich der Wechselblinker gerade befindet
#define   WBL_AUS     0     // beide Lampen sind aus
#define   WBL_START   1     // Startphase: beide Lampen sind an
#define   WBL_BLINKT  2     // Die Lampen blinken normal im Wechsel
byte ledState;              // HIGH : Blinker1 ist an, LOW Blinker2 ist an

MoToSoftLed Blinker1;
MoToSoftLed Blinker2;

MoToTimer BlinkUhr;
//--------------------------------------------------------------SETUP----------------------
void setup() {
  pinMode(Gleis1onP, INPUT_PULLUP);
  pinMode(Gleis1offP, INPUT_PULLUP);

  pinMode(Gleis2onP, INPUT_PULLUP);
  pinMode(Gleis2offP, INPUT_PULLUP);

  pinMode(Gleis3onP, INPUT_PULLUP);
  pinMode(Gleis3offP, INPUT_PULLUP);

  digitalWrite (LS_Relais01, HIGH); // Relaisausgang beim Start "aus"
  pinMode(LS_Relais01, OUTPUT);
  pinMode(Lichtschranke01, INPUT);

  Blinker1.attach(Blinker1P);     // die Ausgänge werden automatisch auf OUTPUT gesetzt
  Blinker1.riseTime( wbSoft );    // Aufblendzeit in ms

  Blinker2.attach(Blinker2P);
  Blinker2.riseTime( wbSoft );    // Aufblendzeit in ms
}
//--------------------------------------------------------------LOOP-----------------------
void loop() {
  // ---Millis übergeben----------------------------
  milli_aktuell = millis();
  // ---Lichtschranke01 Kontrolle-------------------
  LS_Status01 = digitalRead(Lichtschranke01);
  if (LS_Status01 == LOW) {
    digitalWrite (LS_Relais01, LOW); // Relais01 auf Pin2 einschalten
    Gleis1 = true;
    LS_Laufzeit01 =  milli_aktuell;
    MerkerLS1 = 1;
  }
  else {
    if ((milli_aktuell - LS_Laufzeit01 >= LS_Pausezeit01)&& (MerkerLS1 == 1)) // Überbrückungszeit abgelaufen ?
    {
      digitalWrite (LS_Relais01, HIGH); // Relais01 auf Pin2 ausschalten
      Gleis1 = false;
      MerkerLS1 = 0;
    }
  }
  //---Lichtschranke01 Ende------------------------

  if ( digitalRead(Gleis1onP)  == LOW ) {
    Gleis1 = true;
  }
  if ( digitalRead(Gleis1offP) == LOW ) {
    Gleis1 = false;
  }
  if ( digitalRead(Gleis2onP)  == LOW ) {
    Gleis2 = true;
  }
  if ( digitalRead(Gleis2offP) == LOW ) {
    Gleis2 = false;
  }
  if ( digitalRead(Gleis3onP)  == LOW ) {
    Gleis3 = true;
  }
  if ( digitalRead(Gleis3offP) == LOW ) {
    Gleis3 = false;
  }

  SchalterP = Gleis1 || Gleis2  || Gleis3 ; // Blinken, wenn Gleis 1 oder Gleis 2 oder Gleis 3 belegt

  // Wechselblinker
  switch (wblZustand) {
    case WBL_AUS:
      // Beide Lampen sind aus, warten auf einschalten
      if ( SchalterP == true && BlinkUhr.running() == false ) {
        // Beide Leds einschalten, Timer für gemeinsames Startleuchten
        Blinker1.on();
        Blinker2.on();
        BlinkUhr.setTime( wbSoft );
        wblZustand = WBL_START;
      }
      break;
    case WBL_START:
      // Startphase: Nach Zeitablauf erste Led wieder aus
      if ( BlinkUhr.running() == false ) {
        // Die Startzeit ist abgelaufen, Übergang zur normalen Blinkphase
        ledState = HIGH;
        Blinker2.off();
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        wblZustand = WBL_BLINKT;
      }
      break;
    case WBL_BLINKT:
      if ( BlinkUhr.running() == false ) {
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        if ( ledState == LOW ) {
          Blinker1.on();
          Blinker2.off();
          ledState = HIGH;
        } else {
          ledState = LOW;
          Blinker2.on();
          Blinker1.off();
        }
      }
      if ( SchalterP == false ) {
        // Wechselblinker abschalten
        Blinker1.off();
        Blinker2.off();
        wblZustand = WBL_AUS;
        BlinkUhr.setTime(wbZykl);   // minimale 'Aus' zeit des Blinkers
        //( schützt vor Schalterprellen )
      }
      break;

  } // Ende switch Wechselblinker
}
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von e69-fan »

Hallo Franz,

:O:
Bei dem Lichtschranken Programm, das ich dazu gemacht habe, braucht man nur eine IR-Schranke. Die bleibt an, solange der Zug daran vorbei fährt und man kann dann noch eine Zeit einstellen, in der die Schranke weiterhin zu bleibt.
Jetzt bin ich total überrascht, ich will nur Dein Programm mit meinem Blinklicht - alles andere kann raus.

Ich habe Dein zuletzt gepostetes Programm aufgebaut und es hat super funktioniert.
Zug fährt an der Lichtschranke vorbei usw.

Die Gleise werden jedoch von beiden Seiten befahren, also mal von rechts, mal von links.
Eine LS - links und eine LS rechts.

Dann habe ich versucht die Reichweite der beiden LS für zwei parallele Gleise zu erweitern - geht nicht, da spielt der Justierbereich nicht mit. :xx: :xx: :xx:

Um auf einen grünen Zweig zu kommen, betrachte ich nun den gesamten Ablauf in mehreren Abschnitten.

Abschnitt 1: Eine funktionierende Zugerkennung ist das wichtigste.

Mit diesen Reflektions-IR habe ich kein Glück und suche nach Alternativen.

Wie wäre es mit einer IR-Sendediode und gegenüberliegend ein IR-Empfänger. Den Sender gepulst auf Dauerbetrieb. Ist dann eine
Lichtschranke wie z.B. bei einem Garagentor - Lichtstrahl wird unterbrochen - Aktion.

oder

Laser mit gegenüberliegender Fotozelle

https://www.ebay.de/itm/152925903923? ... 1dfd60694a


oder

Die "Gestensteuerung" könnten wir dazu auch mal testen. Ein Modellbahner hat den Sensor zwischen 2 Gleisschwellen montiert und
misst nur die Bewegung über dem Gleis.

Abschnitt 2: Blinklicht, Relais, etc

Abschnitt 3: Einweihung mit anschließendem Besäufnis. :lol: :lol: :lol:


Servus
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Da wäre es gut, wenn wir das bei mir nochmal testen und besprechen was du dazu noch brauchst. Bei mir ist ja auch das Relais noch mit drin, zusätzlich zum blinken, für die Schranke oder was auch immer.

Also ich hätte Dienstag oder Mittwoch Nachmittag noch Zeit, wenn du da auch kannst. Dann könnten wir schauen was schon geht und was dazu muss. Das ist bei mir noch aufgebaut. Ich habe mir auch noch 5 IR Sensoren bestellt. Dann kannst du deinen dritten IR-Sensor mitnehmen, weil ich meine in den nächsten Tagen bekomme. Die Gestik-Senoren kommen erst in einer Woche glaube ich, dann kann ich die mal testen.

Servus
Franz

PS: Ich habe mal die IR-Sensoren auf Weite getestet. 30cm machen die. Ich weiß nicht wie weit deine Gleise auseinander sind, die mit einem Sensor erfasst werden sollen.
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

So ich habe jetzt mal den zweiten Sensor für die andere Gleisseite eingebaut, und die anderen, die wir nicht brauchen rausgeschmissen.

Sieht dann so aus:
.

Code: Alles auswählen

#include <MobaTools.h>
/* Demo: Wechselblinker modifiziert von Bodo

   Plus IR Lichtschranke mit Relais
   Dieses Demo ist etwas komplexer und zeigt die Realisierung eines
   Wechselblinker, der per Schalter ein- und ausgeschaltet wird.
   Wie bei Wechselblinkern an einem BÜ üblich, starten die beiden Lampen
   gleichzeitig, um dann im Wechseltakt zu blinken
   Dieses Demo verwendet auch die 'Eieruhr' um Zeitverzögerungen zu realisieren
   Die 'Eieruhr' ist ein Zeitzähler, der aufgezogen werden kann und im loop kann
   abgefragt werden, ob er abgelaufen ist.
*/

// Festlegen der Ports
const int Blinker1P  =  6;  // Die beiden Led's des
const int Blinker2P  =  7;  // Wechselblinkers.
// ----------- Lichtschranke aktivieren -------------------------------------------------
const byte Lichtschranke01 = 3; // Pin 3 ist für Lichtschranke
const byte Lichtschranke02 = 4; // Pin 4 ist für Lichtschranke
const byte LS_Relais01 = 2; // Pin 2 ist für Relais Lichtschranke
byte MerkerLS1 = 0;
unsigned long LS_Laufzeit01 = 0; // Lichtschranke01 Ablauf Zeit
const unsigned long LS_Pausezeit01 = 3000; // Lichtschranke01 Prüfzeit Überbrückung 3 Sek.
unsigned long milli_aktuell = 0;
byte LS_Status01 = 0;
byte LS_Status02 = 0;
// --------------------------------------------------------------------------------------
boolean SchalterP = false;  // Blinkschaltung on/off

boolean Gleis1    = false;  // Gleis 1 belegt/frei
boolean Gleis2    = false;  // Gleis 2 belegt/frei
boolean Gleis3    = false;  // Gleis 3 belegt/frei

// Weitere Konstante
const int wbZykl = 1100;    // Zykluszeit des Wechselblinkers
const int wbSoft = 400;     // Auf/Abblendzeit der Lampen

// Zustand des Wechselblinker
byte wblZustand = 0;        // In dieser Variable wird hinterlegt, in welchem Zustand
// sich der Wechselblinker gerade befindet
#define   WBL_AUS     0     // beide Lampen sind aus
#define   WBL_START   1     // Startphase: beide Lampen sind an
#define   WBL_BLINKT  2     // Die Lampen blinken normal im Wechsel
byte ledState;              // HIGH : Blinker1 ist an, LOW Blinker2 ist an

MoToSoftLed Blinker1;
MoToSoftLed Blinker2;
MoToTimer BlinkUhr;
//--------------------------------------------------------------SETUP----------------------
void setup() {
 
  digitalWrite (LS_Relais01, HIGH); // Relaisausgang beim Start "aus"
  pinMode(LS_Relais01, OUTPUT);
  pinMode(Lichtschranke01, INPUT);
  pinMode(Lichtschranke02, INPUT);

  Blinker1.attach(Blinker1P);     // die Ausgänge werden automatisch auf OUTPUT gesetzt
  Blinker1.riseTime( wbSoft );    // Aufblendzeit in ms

  Blinker2.attach(Blinker2P);
  Blinker2.riseTime( wbSoft );    // Aufblendzeit in ms
}
//--------------------------------------------------------------LOOP-----------------------
void loop() {
  // ---Millis übergeben----------------------------
  milli_aktuell = millis();
  // ---Lichtschranke01 Kontrolle-------------------
  LS_Status01 = digitalRead(Lichtschranke01);
  LS_Status02 = digitalRead(Lichtschranke02);
  if ((LS_Status01 == LOW)|| (LS_Status02 == LOW)) {
    digitalWrite (LS_Relais01, LOW); // Relais01 auf Pin2 einschalten
    Gleis1 = true;
    LS_Laufzeit01 =  milli_aktuell;
    MerkerLS1 = 1;
  }
  else {
    if ((milli_aktuell - LS_Laufzeit01 >= LS_Pausezeit01)&& (MerkerLS1 == 1)) // Überbrückungszeit abgelaufen ?
    {
      digitalWrite (LS_Relais01, HIGH); // Relais01 auf Pin2 ausschalten
      Gleis1 = false;
      MerkerLS1 = 0;
    }
  }
  //---Lichtschranke01 Ende------------------------

  SchalterP = Gleis1 || Gleis2  || Gleis3 ; // Blinken, wenn Gleis 1 oder Gleis 2 oder Gleis 3 belegt

  // Wechselblinker
  switch (wblZustand) {
    case WBL_AUS:
      // Beide Lampen sind aus, warten auf einschalten
      if ( SchalterP == true && BlinkUhr.running() == false ) {
        // Beide Leds einschalten, Timer für gemeinsames Startleuchten
        Blinker1.on();
        Blinker2.on();
        BlinkUhr.setTime( wbSoft );
        wblZustand = WBL_START;
      }
      break;
    case WBL_START:
      // Startphase: Nach Zeitablauf erste Led wieder aus
      if ( BlinkUhr.running() == false ) {
        // Die Startzeit ist abgelaufen, Übergang zur normalen Blinkphase
        ledState = HIGH;
        Blinker2.off();
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        wblZustand = WBL_BLINKT;
      }
      break;
    case WBL_BLINKT:
      if ( BlinkUhr.running() == false ) {
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        if ( ledState == LOW ) {
          Blinker1.on();
          Blinker2.off();
          ledState = HIGH;
        } else {
          ledState = LOW;
          Blinker2.on();
          Blinker1.off();
        }
      }
      if ( SchalterP == false ) {
        // Wechselblinker abschalten
        Blinker1.off();
        Blinker2.off();
        wblZustand = WBL_AUS;
        BlinkUhr.setTime(wbZykl);   // minimale 'Aus' zeit des Blinkers
        //( schützt vor Schalterprellen )
      }
      break;

  } // Ende switch Wechselblinker
}
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Falls du dein Steckernetzteil suchst, das ist bei mir liegen geblieben. :)
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von e69-fan »

Upps,

der Einäugige sieht halt nur die Hälfte. Das hole ich mir mal bei Gelegenheit ab. Hab noch welche im Fundus.

Bin heftig am Bahnübergang testen und habe ein neues Thema aufgemacht.

Servus
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Ich habe hier im Forum mal ein Thema aufgemacht, das die Treiber behandelt. Da du, Wolfgang das letzte mal danach gefragt hast, was ich mache, wenn ich bischen mehr Strom benötige als 10-20mA vom Arduino Pin.

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Hi Wolfgang.
Die IR-Lichtschranke, die du mal mitgebracht hast, wil sie keinen Mux macht, kann ich auch nicht mehr zum Leben erwecken. Ich schätze das ist der LogicChip der da drauf ist KO. Die kann aber auch nicht wirklich mehr als die, die wir schon getestet haben. Somit spare ich es mir, davon welche zu bestellen. Macht für mich keinen Sinn.

Franz
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast