int Relais1 =1; // Gerade Antrieb
int Relais2 =2; // Links Antrieb
int Relais3 =3; // Rechts Antrieb
int WeichenPosition = 0;
void setup() {
pinMode(Relais1,OUTPUT);
pinMode(Relais2,OUTPUT);
pinMode(Relais3,OUTPUT);
digitalWrite(Relais1,LOW);
digitalWrite(Relais2,LOW);
digitalWrite(Relais3,LOW);
}
void loop() {
if(analogRead(A1) >950) { //Wenn circa 5V anliegen, wird der Code Aktiviert
if(analogRead(A1)>950)
{ WeichenPosition++; } //Weichenstellung immer eins vor
if(WeichenPosition == 1)
{ digitalWrite(Relais1,HIGH); // Es wird nach Geradeaus geschaltet
delay(50);
digitalWrite(Relais1,LOW);
digitalWrite(Relais2,HIGH); // Es wird nach Links geschaltet.
delay(50);
digitalWrite(Relais2,LOW);
}
if(WeichenPosition ==2)
{ digitalWrite(Relais1,HIGH); // Es wird nach Geradeaus geschaltet
delay(50);
digitalWrite(Relais1,LOW);
}
if(WeichenPosition == 3)
{digitalWrite(Relais1,HIGH); // Es wird nach Geradeaus geschaltet
delay(50);
digitalWrite(Relais1,LOW);
digitalWrite(Relais3,HIGH); // Die Weiche wird nach Rechts geschaltet.
delay(50);
digitalWrite(Relais3,LOW);
WeichenPosition =0; // Stellung wird wieder auf Null
}
}
delay(100); // Billiges Entprellen, verhindert, dass die Schaltung ein 2tes mal durchläuft, wenn die Lok noch einen Kontakt aussendet
}
Das ist der Fertige Skatch, damit sollte deine Weiche so Schalten, wie du dir das vorstellst.
Ich bin zwar kein Spezialist, in Programmieren (sieht man anhand der Delay Funktion)
sollte allerdings laufen und funktionieren.
Wenn du in Erwähnung siehst dass so zu bauen, kann ich gerne an meiner Modellbahn ausprobieren, ob das auch Ordnungsgemäß funktioniert.