Ich komme gerade nicht weiter. Wahrscheinlich ist es ein Verständnis Problem. Ich bekomme eine Weiche geschaltet, aber das war es dann auch. Wenn ich das richtig verstanden habe, gebe ich in dem Sketch die Pins an die zusammen gehören. Eingestellte Adresse ist 20, erste Weiche ist 20 Port 0, demnach sollte die 2. Weiche doch 20 Port 1 sein, oder?
20:0 schaltet, 20:1 nicht.
2 ULN am Arduino, 2 Pins pro Weiche, macht also maximal 8 Weichen pro Arduino (Port 0 - 7). Die nächste würden dann einfach an den nachten Arduino kommen, gleicher Sketch, nur Adresse 21.
Hier mal ein Auszug aus dem Sketch, eventuell habe ich da ja auch noch Fehler drin.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const int DccAddr = 20; // DCC-Decoderadresse
const byte iniMode = 0x50 | AUTOADDR /*| ROCOADDR*/; // default-Betriebsmodus ( CV47 )
const int PomAddr = 50; // Adresse für die Pom-Programmierung ( CV48/49 )
// mit LocoNet-Schnittstelle ist dies die LocoNetId
#define NOACK // Diese Zeile aktivieren, wenn keine HW zum CV auslesen vorhanden ist
// ( kein Ack-Pin ) Der in Interfac.h definierte Pin wird dann zwar als OUTPUT
// gesetzt, kann aber für beliebige Funktionen in der Tabelle unten genutzt werden
// Ausgänge: mit NC gekennzeichnete Ausgänge werden keinem Port zugeordnet. Damit können Ports gespart werden,
// z.B. wenn bei einem Servo kein Polarisierungsrelais benötigt wird
const byte modePin = 13; // Anzeige Betriebszustand (Normal/Programmierung) (Led)
#define STATICRISE (250/50 << 4) // Softled riseTime = 250 ( max = 750 )
#define COILMOD NOPOSCHK|CAUTOOFF
#define SERVOMOD SAUTOOFF|NOPOSCHK|SDIRECT
#define STATICMOD CAUTOOFF|BLKSOFT|BLKSTRT|STATICRISE // Wechselblinker mit beiden Leds an beim Start
const byte iniTyp[] = { FCOIL, FCOIL, FCOIL, FCOIL, FCOIL, FCOIL, FCOIL, FCOIL };
const byte out1Pins[] = { A5, A3, A1, 3, 5, 7, 9, 11 }; // output-pins der Funktionen
const byte out2Pins[] = { A4, A2, A0, 4, 6, 8, 10, 12 };
const byte iniFmode[] = { CAUTOOFF, CAUTOOFF, CAUTOOFF, CAUTOOFF, CAUTOOFF, CAUTOOFF, CAUTOOFF, CAUTOOFF };
const byte iniPar1[] = { 50, 50, 50, 50, 50, 50, 50, 50 };
const byte iniPar2[] = { 50, 50, 50, 50, 50, 50, 50, 50 };
const byte iniPar3[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
const byte iniPar4[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; // nur für Lichtsignale!
//------------------------------------------------------------------------------------