Modellbahn - Bahnübergang - Lichtschranke
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Modellbahn - Bahnübergang - Lichtschranke
Danke.
Auch ein schönes Wochenende.
Franz
Auch ein schönes Wochenende.
Franz
Re: Modellbahn - Bahnübergang - Lichtschranke
Hallo Franz,
ich habe eine zweite Lichtschranke gesetzt und die Gleisbelegtmeldungen herausgenommen.
Ich muss jetzt noch die Reichweite der IR vergrößern, dann könnte ich mehrere parallele Gleise erfassen.
Was meinst Du dazu ???
Grüße
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
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 aus der Heimat der E69
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Modellbahn - Bahnübergang - Lichtschranke
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.
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
}
Re: Modellbahn - Bahnübergang - Lichtschranke
Hallo Franz,
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.
![Schrott :xx:](./images/smilies/computer-smilies-0012.gif)
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.
Servus
![ueberrascht :O:](./images/smilies/ueberrascht.gif)
Jetzt bin ich total überrascht, ich will nur Dein Programm mit meinem Blinklicht - alles andere kann raus.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.
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.
![Schrott :xx:](./images/smilies/computer-smilies-0012.gif)
![Schrott :xx:](./images/smilies/computer-smilies-0012.gif)
![Schrott :xx:](./images/smilies/computer-smilies-0012.gif)
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.
![Lachend :lol:](./images/smilies/icon_lol.gif)
![Lachend :lol:](./images/smilies/icon_lol.gif)
![Lachend :lol:](./images/smilies/icon_lol.gif)
Servus
Grüße aus der Heimat der E69
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Modellbahn - Bahnübergang - Lichtschranke
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.
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.
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Modellbahn - Bahnübergang - Lichtschranke
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:
.
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
}
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Modellbahn - Bahnübergang - Lichtschranke
Falls du dein Steckernetzteil suchst, das ist bei mir liegen geblieben. ![Lächeln :)](./images/smilies/icon_e_smile.gif)
![Lächeln :)](./images/smilies/icon_e_smile.gif)
Re: Modellbahn - Bahnübergang - Lichtschranke
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
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
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Modellbahn - Bahnübergang - Lichtschranke
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
Franz
- Admin
- Administrator
- Beiträge: 1199
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Modellbahn - Bahnübergang - Lichtschranke
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
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
Wer ist online?
Mitglieder in diesem Forum: Ahrefs [Bot] und 27 Gäste