Moin zusammen, ich habe auf meinem Rechner noch ein Sketch gefunden womit man einen Arduino z.B. Nano einen Bahnhübergang sicher lassen kann.
Hier sind die Einzelteile der Nano zwei Servos und zwei Relais zu sehen.
Der BÜ wird mit 4 LEDs ausgerüstet und mit einer Faller Klingel oder Türklingel wenn man einen DDR BÜ nachbauen möchte! Das zweite Relais ist nach dem Einschalten der Sicherung dauerhaft geschaltet und fällt beim Ausschalten ab!
Die LEDs fehlen hier noch und die zwei Reedkontakte die im Gleis angebracht werden müssen sind auch noch nicht angeschlossen. Dafür hatte ich bisher keine Zeit, da meiner Modelleisenbahn noch lange nicht soweit ist. Aus diesem Grund liegt das ganze Projekt noch in der Stapelbox mit einer kleinen Anschlußzeichnung.
Hier ist der Sketch damit das ganze auch bei anderen Anlagen zum Einsatz kommen kann!!
#include <Servo.h> // Variablen-Deklaration und Definition
// das ist für die Servoantriebe und muss überall wo es um die Schranke geht mit hinter die laufzahl geschrieben werden! int Kreuz1 = 13; // BITTE NICHT IN KREUZ1 UMSCHREIBEN das geht NICHT!!!! int Kreuz2 = 12; int Kreuz3 = 11; int Kreuz4 = 8; int Kreuz5 = 5; int Reed1 = 6; int Reed2 = 7;
int buttonState = 0;
int Schranke1 = 9; int Schranke2 = 10;
unsigned int TimerSchrankeZu = 0;
Servo Schranke1a; // das a hinter der Zahl ist wichtig und darf nicht vergessen werden! Servo Schranke2a;
unsigned long aktMillis, vorMillis; // aktuelle Millisekunden und vorherige
byte b = 0;
boolean KreuzAnAus = LOW; // boolean Kreuz1-x an low werden über internenwiederstand angeschlossen auch ein relais an kreuz3 wird zum läutwerk geschaltet boolean Kreuz2AnAus = LOW; boolean Kreuz3AnAus = LOW; boolean Kreuz4AnAus = LOW; boolean Kreuz5AnAus = LOW; // hier wird das alte spulenläutwerk über ein relais mit optokoppler angesteuert!!! boolean blink100ms = LOW; boolean blink500ms = LOW; boolean blink1000ms = LOW;
//boolean Schranke1u2SollZu = LOW;
// Funktionsdeklaration void Funktion100ms();
void setup() // put your setup code here, to run once: {
Vielleicht kann das ja einer von Euch brauchen? Dann viel Spass bei der BÜ-Sicherung
Gruß Karsten
Für Klugscheißerei und Neid nehme ich mir KEINE Zeit! www.rafeba.de.tl nicht jeder PC mag das .de.tl !!! Das Maß ist VOLL und ich brauche eine neue Homepage! www.rafeba02.de.tl
Moin zusammen, gestern habe ich diesen Sketch testen können auf einer N-Anlage ist mein erster Bü in Betrieb gegangen. Leider konnten wir keine Reedkontakte verbauen und mussten zwangsläufig auf LDR-Module zurück greifen. Diese LDR-Module geben aber einen Dauerimpuls raus/die ganze Zuglänge. Jetzt habe ich einen weiteren Nano programmiert mit einem Wandlersketch und mit diesem neuen Sketch wird der Dauerimpuls zu einem Kurzimpuls gewandelt.
/*Taster drücken LED blinkt kurz und stopt! DER WANDLER SKETCH es werden vier LDR-Module angeschlossen, je zwei LDR-Module schalten einen Ausgang. Das ist eine Verriegelung und soll einen Dauerimpuls am Schrankensketch Nano verhindern! */ int pinREED = 14; int pinLED1 = 3; int pinREED1 = 15; int pinREED2 = 16; int pinLED2 = 4; int pinREED3 = 17;
void setup() { pinMode(pinREED, INPUT_PULLUP); // 10Kohm Wiederstand ist gesetzt pinMode(pinLED1, OUTPUT); // Schaltausgang zum EINSCHALT-Relais BUE-Sicherung pinMode(pinREED1, INPUT_PULLUP); // 10Kohm Wiederstand ist gesetzt pinMode(pinREED2, INPUT_PULLUP); // 10Kohm Wiederstand ist gesetzt pinMode(pinLED2, OUTPUT); // Schaltausgang zum EINSCHALT-Relais BUE-Sicherung pinMode(pinREED3, INPUT_PULLUP); // 10Kohm Wiederstand ist gesetzt }
void loop() { int zustand = digitalRead(pinREED); // Nun LDR tu was... if (zustand == HIGH){ //zustand ist aus!! digitalWrite(pinLED1, LOW);} else { //zustand ein!! digitalWrite(pinLED1, HIGH); // Aus einem Dauerimpuls vom LDR wird jetzt ein Kurzerimpuls delay(100);// an dieser Stelle kann man die Schaltimpulslänge einstellen! digitalWrite(pinLED1,LOW);// anstelle einer LED kann man auch ein Realis ansteuern! delay(2000);// das ist die Pufferzeit bis der Arduino wieder bei Tastendruck losläuft! } int zustand1 = digitalRead(pinREED1); // Nun LDR tu was... if (zustand1 == HIGH){ //zustand ist aus!! digitalWrite(pinLED1, LOW);} else { //zustand ein!! digitalWrite(pinLED1, HIGH); // Aus einem Dauerimpuls vom LDR wird jetzt ein Kurzerimpuls delay(100);// an dieser Stelle kann man die Schaltimpulslänge einstellen! digitalWrite(pinLED1,LOW);// anstelle einer LED kann man auch ein Realis ansteuern! delay(2000);// das ist die Pufferzeit bis der Arduino wieder bei Tastendruck losläuft! }
int zustand2 = digitalRead(pinREED2); // Nun LDR tu was... if (zustand2 == HIGH){ //zustand ist aus!! digitalWrite(pinLED2, LOW);} else { //zustand ein!! digitalWrite(pinLED2, HIGH); // Aus einem Dauerimpuls vom LDR wird jetzt ein Kurzerimpuls delay(100);// an dieser Stelle kann man die Schaltimpulslänge einstellen! digitalWrite(pinLED2,LOW);// anstelle einer LED kann man auch ein Realis ansteuern! delay(2000);// das ist die Pufferzeit bis der Arduino wieder bei Tastendruck losläuft! } int zustand3 = digitalRead(pinREED3); // Nun LDR tu was... if (zustand3 == HIGH){ //zustand ist aus!! digitalWrite(pinLED2, LOW);} else { //zustand ein!! digitalWrite(pinLED2, HIGH); // Aus einem Dauerimpuls vom LDR wird jetzt ein Kurzerimpuls delay(100);// an dieser Stelle kann man die Schaltimpulslänge einstellen! digitalWrite(pinLED2,LOW);// anstelle einer LED kann man auch ein Realis ansteuern! delay(2000);// das ist die Pufferzeit bis der Arduino wieder bei Tastendruck losläuft! } } // nun wartet die Steuerung bis der nächste mal der Taster gedrückt wird!
Dann geht es bald wieder an die N-Anlage zum testen.
Bis bald Gruß Karsten
Für Klugscheißerei und Neid nehme ich mir KEINE Zeit! www.rafeba.de.tl nicht jeder PC mag das .de.tl !!! Das Maß ist VOLL und ich brauche eine neue Homepage! www.rafeba02.de.tl