1. Funktionsumfang Motorsteuerung (vorwärts/rückwärts, stufenlose Geschwindigkeit) Licht vorne/hinten (automatisch je nach Fahrtrichtung) Zusatzfunktionen (z. B. F1/F2 für Kabinenlicht oder Sound) DCC-Adresse programmierbar über CVs 2. Schaltplan (Textbeschreibung) Bauteile: Arduino Nano oder Pro Mini (5 V) Optokoppler 6N137 (DCC-Signaltrennung) H-Brücke L298N oder LMD18200 (Motor) 2× NPN-Transistor (z. B. BC337) für Lichtausgänge Widerstände: 1 kΩ (LEDs), 10 kΩ (Pull-ups) Freilaufdioden (bei Relais oder Spulen) Kondensator 100 µF (Strompuffer) Signalfluss: Gleissignal → Optokoppler 6N137 → Arduino Pin 2 (Interrupt) Arduino → PWM-Ausgang Pin 9 → H-Brücke → Motor Arduino → Digital-Pins 3 & 4 → Transistoren → LEDs (Licht vorne/hinten) Zusatzfunktionen → weitere Pins (z. B. 5 & 6) 3. Beispielcode (Basisversion) Cpp Code kopieren #include NmraDcc Dcc; DCC_MSG Packet; #define MOTOR_PIN 9 #define LIGHT_FWD 3 #define LIGHT_REV 4 void setup() { pinMode(MOTOR_PIN, OUTPUT); pinMode(LIGHT_FWD, OUTPUT); pinMode(LIGHT_REV, OUTPUT); Dcc.pin(2, 0); // DCC-Eingang Dcc.init(MAN_ID_DIY, 10, FLAGS_MY_ADDRESS_ONLY, 3, 0); } void loop() { Dcc.process(); } void notifyDccSpeed(uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed) { analogWrite(MOTOR_PIN, map(Speed, 0, MaxSpeed, 0, 255)); digitalWrite(LIGHT_FWD, ForwardDir); digitalWrite(LIGHT_REV, !ForwardDir); } void notifyDccFunc(uint16_t Addr, FN_GROUP group, uint8_t state) { if (group == FN_1) digitalWrite(5, state); // Zusatzfunktion 1 if (group == FN_2) digitalWrite(6, state); // Zusatzfunktion 2 }