Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
anleitungen:bauanleitungen:locoturn_v10:150_locoturn_parameter [2024/02/10 15:54] – Externe Bearbeitung 127.0.0.1 | anleitungen:bauanleitungen:locoturn_v10:150_locoturn_parameter [2024/11/09 16:20] (aktuell) – [Parameter zur Einstellung der Drehscheibe] domapi | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Aus der Vielzahl der Konfigurationsvariablen (#defines) hier ein paar wesentliche: | Aus der Vielzahl der Konfigurationsvariablen (#defines) hier ein paar wesentliche: | ||
- | * Einige #defines wie **USE_DCC**, | + | * Einige #defines wie **USE_DCC**, |
* Das #define **USE_POTI** muss auf 0 gesetzt werden, wenn kein Poti angeschlossen ist, sonst kann es sein, dass die Drehscheibe nach dem ersten Kalibrieren und Anfahren des ersten Ports " | * Das #define **USE_POTI** muss auf 0 gesetzt werden, wenn kein Poti angeschlossen ist, sonst kann es sein, dass die Drehscheibe nach dem ersten Kalibrieren und Anfahren des ersten Ports " | ||
Zeile 9: | Zeile 9: | ||
* Zentrale Parameter sind die Anzahl der benötigten Ports #define **PORT_CNT** bzw. #define **PARTLY_USED_PORTS** (falls nicht alle angefahren werden sollen) und #define **PARTLY_USED_PORTS_TAB** (Tabelle der Ports, die angefahren werden können). | * Zentrale Parameter sind die Anzahl der benötigten Ports #define **PORT_CNT** bzw. #define **PARTLY_USED_PORTS** (falls nicht alle angefahren werden sollen) und #define **PARTLY_USED_PORTS_TAB** (Tabelle der Ports, die angefahren werden können). | ||
| | ||
- | * Die erste verwendete DCC Adresse ist einzugeben, wenn man von dem im Programm vorgegebenen DCC-Adressraum abweichen will: #define **FIRST_USED_DCC_ADDR**. | + | * Das #define **DCC_MAERKLIN_7687_COMPATIBLE** muss für die Verwendung |
+ | |||
+ | * Über das #define **DCC_OFFSET** kann ein Offset eingestellt werden, damit LocoTurn auf andere DCC-Adressbereiche reagiert. Der Offset wird auf die jeweiligen DCC-Adressen addiert. Bei manchen Zentralen muss z.B. der Roco-Offset von „-4“ hier eingestellt werden, damit LocoTurn die Adressen richtig interpretiert. | ||
| | ||
- | * Ebenso ist die letzte verwendete DCC Adresse | + | * Ebenso ist die letzte verwendete DCC Adresse |
| | ||
* Liste der DCC-Adressen für die Ports anpassen: #define **DCC_PORT_ADDR_LIST**. Die Liste muss **PORT_CNT**-Einträge enthalten. Wenn der Märklin-Modus (**DCC_MAERKLIN_7687_COMPATIBLE**) verwendet wird, reichen PORT_CNT / 2 Einträge. | * Liste der DCC-Adressen für die Ports anpassen: #define **DCC_PORT_ADDR_LIST**. Die Liste muss **PORT_CNT**-Einträge enthalten. Wenn der Märklin-Modus (**DCC_MAERKLIN_7687_COMPATIBLE**) verwendet wird, reichen PORT_CNT / 2 Einträge. | ||
Zeile 17: | Zeile 19: | ||
* Das #define **ADVANCED_SIGNAL_CONTROL** = 1 steuert die Signale in Abhängigkeit, | * Das #define **ADVANCED_SIGNAL_CONTROL** = 1 steuert die Signale in Abhängigkeit, | ||
| | ||
- | * Zur Kalibrierung den DEBUG-Mode einschalten, | + | * Zur Kalibrierung |
| | ||
* Bei Bedarf Einstellungen der Ausrichtung bzw. Drehrichtung von Drehscheibe, | * Bei Bedarf Einstellungen der Ausrichtung bzw. Drehrichtung von Drehscheibe, | ||
Zeile 61: | Zeile 63: | ||
- | ====== | + | ====== |
- | ==== LocoTurn V1.0 ==== | + | |
- | Hier stehen alle wichtigen Parameter für den Betrieb einer Fleischmann-Drehscheibe mit einem Direktantrieb über einen 400 Step Motor. Genutzt werden 26 von 48 Ports. Am einfachsten orientiert man sich an diesem Beispiel und nimmt ggf. Änderungen vor: | + | |
- | < | + | Ab der Version V1.1 sind einige #defines dazugekommen oder wurden umbenannt. |
- | // | + | |
- | // Benutzer-spezifische Parameter | + | |
- | // | + | |
- | /* | + | |
- | | + | |
- | Falls ein bestimmter Parameter hier nicht definiert wurde, wird ein default-Wert aus dem Hauptsketch verwendet! | + | |
- | Hier stehen nur die wichtigsten Parameter, die am häufigsten benutzerindividuell eingestellt werden müssen. | + | |
- | + | ||
- | Intention: Bei eine neuen Version | + | |
- | */ | + | |
+ | Am besten man orientiert sich an den Einstellungen unten und passt alles an die eigene Drehscheibe an. Zu den meisten Parametern gibt es eine Erläuterung, | ||
+ | < | ||
// | // | ||
- | // Parameterset | + | // Benutzer-spezifische Parameter für V 1.4 |
- | // 26 Gleisabgänge (= Ports) domapi-Anlage | + | |
// | // | ||
- | |||
- | // | ||
- | // Zentrale #defines zum Ein-/ | ||
- | // | ||
- | |||
- | #define USE_DCC | ||
- | |||
- | #define USE_SOUND | ||
- | |||
- | #define USE_SERIAL_INPUT | ||
- | #define USE_VERBOSE | ||
- | |||
- | #define USE_OLED | ||
- | #define USE_BUTTONS | ||
- | |||
- | #define SHOW_STATUS | ||
- | |||
- | #define USE_POTI | ||
- | | ||
- | |||
- | // | ||
- | // *** Debugging*** | ||
- | // | ||
- | #define ENABLE_DPRINTF | ||
- | |||
- | |||
- | // Typische Konfigurationen: | ||
- | // ========================= | ||
- | // Normalbetrieb auf der Anlage | ||
- | // | ||
- | //#define USE_DCC | ||
- | //#define USE_SOUND | ||
- | //#define USE_SERIAL_INPUT | ||
- | //#define USE_VERBOSE | ||
- | //define SHOW_STATUS | ||
- | //#define ENABLE_DPRINTF | ||
- | |||
- | // Test der Steuerung und Einstellung der DS | ||
- | // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
- | //#define USE_DCC | ||
- | //#define USE_SOUND | ||
- | //#define USE_SERIAL_INPUT | ||
- | //#define USE_VERBOSE | ||
- | //#define SHOW_STATUS | ||
- | //#define ENABLE_DPRINTF | ||
- | |||
- | |||
- | // | ||
- | // Steuerung Beleuchtungseffekte | ||
- | // | ||
- | #define LEDS_ON_BOARD | ||
- | #define WS281X_BOARD | ||
- | #define MOBALEDLIB | ||
- | |||
- | #define LIGHT_CONTROL | ||
- | |||
- | #define HOUSE_LIGHT_MODUS | ||
- | |||
- | // | ||
- | // *** Turntable *** | ||
- | // | ||
- | |||
- | /* - Die Anzahl verwendeter Ports muss bei PORT_CNT, die Portnummern bei PARTLY_USED_PORTS_TAB eingetragen werden | ||
- | - Weiterhin pro Port 0 oder 1 bei der Signalsteuerung PORT_TYPE. | ||
- | - Die letzte genutzte DCC-Adresse wird automatisch über eine Formel anhand der Anzahl Pors berechnet (LAST_USED_DCC_ADDR). | ||
- | - Und die Polarisierung muss unten eingestellt werden. POLARISATION_CHANGE_PORT oder POLARISATION_RELAIS_LIST. | ||
- | */ | ||
- | |||
- | #define PORT_CNT | ||
- | #define PARTLY_USED_PORTS | ||
- | |||
- | #if PARTLY_USED_PORTS | ||
- | #define PARTLY_USED_PORTS_REFERENCE | ||
- | # | ||
- | #define PORT_CNT | ||
- | |||
- | // Gleis 1 = 9: | ||
- | #define PARTLY_USED_PORTS_TAB | ||
- | |||
- | #endif | ||
- | |||
- | #define CIRCUMFERENCE | ||
- | |||
- | |||
- | #define OFFSET_PORT_POSITION | ||
- | #define OFFSET_PORT_POSITION_U_TURN | ||
- | |||
- | |||
/* | /* | ||
- | Tipp: | + | 26.01.2024: finale Anpassung |
- | ----- | + | |
- | + | ||
- | Man kann das Raster, in dem die Ports initial angelegt werden auch kleiner machen, z.B. 0,1 Grad genau. Hierzu muss man folgendes eintragen: | + | |
- | + | ||
- | #define PORT_CNT | + | |
- | #define PARTLY_USED_PORTS | + | |
- | + | ||
- | #if PARTLY_USED_PORTS | + | |
- | | + | |
- | # | + | |
- | # | + | |
- | # | + | |
- | #endif | + | |
- | + | ||
- | Im Prinzip teilt das den Vollkreis in 3600 Ports/ | + | |
- | + | ||
- | Grad | + | |
- | 30° 1 | + | |
- | 135° " | + | |
- | 210° 7 | + | |
- | 315° " | + | |
- | */ | + | |
- | + | ||
- | + | ||
- | // | + | |
- | // *** Signalsteuerung *** | + | |
- | // | + | |
- | #define ADVANCED_SIGNAL_CONTROL | + | |
- | + | ||
- | // Gleisabgang | + | |
- | #define PORT_TYPE | + | |
- | // als Beispiel hier: bei 26 Ports sind einige aktiv, einige sind blind! | + | |
- | + | ||
- | + | ||
- | // | + | |
- | // *** Polarization relays *** | + | |
- | // | + | |
- | #define POLARISATION_RELAIS_PIN | + | |
- | #define POLARISATION_RELAIS_INVERS | + | |
- | + | ||
- | #define POLARISATION_CHANGE_PORT_START | + | |
- | #define POLARISATION_CHANGE_PORT_END | + | |
- | + | ||
- | /* Teilt die Drehscheibe für die Polarisierung quasi in 2 Hälften. | + | |
- | Ab dem hier definierten START-Port (externe Nummerierung wie OLED-Anzeige) wird das Polarisationsrelais bis zum i.d.R. gegenüberliegenden END-Port eingeschaltet. | + | |
- | Die hier eingegebenen Zahlen müssen zwischen 1 und PORT_CNT liegen! START muss < END sein! | + | |
- | Die eine Hälfte | + | |
- | Spart einige Bytes ;-) | + | |
- | -1 = Polarisation gemäß der unten stehenden Liste | + | |
- | */ | + | |
- | + | ||
- | //#define POLARISATION_RELAIS_LIST | + | |
- | + | ||
- | + | ||
- | //--------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | |
- | // *** Direction and control settings *** | + | |
- | // | + | |
- | #define ROTATIONSWITCH_DIRECTION | + | |
- | -1 = Drehen nach rechts höhere Port-Nr.; links = niedrigere Port-Nr.*/ | + | |
- | + | ||
- | #define USE_ROTARY_ENCODER_MOVEMENT | + | |
- | + | ||
- | #define SPEED_POTI_DIRECTION | + | |
- | + | ||
- | #define ROTATIONSWITCH_MENU_DIR | + | |
- | #define TURNTABLE_DIRECTION | + | |
- | + | ||
- | + | ||
- | #define ENCODER_LOGIC | + | |
- | - Bewegung wird erst gestartet, wenn Encoder-Taste gedrückt wird | + | |
- | - während der Bewegung kann die anzufahrende Portnummer nicht mehr geändert werden | + | |
- | - Taste während Bewegung ruft das Menü auf und stoppt die Bewegung | + | |
- | 0 = Encoder startet Bewegung, während Bewegung kann weiter gedreht werden*/ | + | |
- | + | ||
- | #define DIRECTION_CHANGE_POSSIBLE | + | |
- | + | ||
- | #define MOVE_STATUS_INVERS | + | |
- | - 1 and turntable moving = Optokoppler sperrt. | + | |
- | - 1 + Stillstand: OK steuert durch und erzeugt eine Rückmeldung. | + | |
- | Viele Steuerungssoftwarepakete erwarten ein Signal, wenn die DS steht (d.h. angekommen ist)*/ | + | |
- | + | ||
- | // | + | |
- | // *** Schrittmotor *** | + | |
- | // | + | |
- | #define FIXED_STEPS_PER_ROUND | + | |
- | + | ||
- | #define FIXED_STEPS_HAS_CONTACT | + | |
- | + | ||
- | #define NOT_ENABLE_PIN | + | |
- | The pin of the module must be left open (std 6) | + | |
- | Use Pin 6 for TMC2208 */ | + | |
- | #define ENABLE_ALWAYS_ON | + | |
- | | + | |
- | Set to 1 for a powerful stepper without gearbox because the magnetic field will change the position when powered of | + | |
- | If a stepper driver like the TMC2100 is used it's better to disable the NOT_ENABLE_PIN (-1) to activate the automatic power saving mode instead. | + | |
- | Bei Einsatz TMC2208 sollte man den Wert 1 verwenden! */ | + | |
- | + | ||
- | #define STEPPER_RAMP_LENGTH | + | |
- | Set to 50 if 1/16 steps are used (MS1 - MS3 connected do +5V)*/ | + | |
- | + | ||
- | #define MOVE_SPEED1 | + | |
- | #define TURNBACK_SPEED | + | |
- | + | ||
- | #define USE_TURNBACK | + | |
- | + | ||
- | #define MOVE_SPEED2 | + | |
- | #define MOVE_SPEED3 | + | |
- | #define MOVE_SPEED4 | + | |
- | + | ||
- | #define CLEARANCE_TEST_SPEED | + | |
- | #define CALIBRATE_SPEED_FAST | + | |
- | #define CALIBRATE_SPEED_SLOW | + | |
- | #define ZERO_DETECTION_OFFSET | + | |
- | + | ||
- | #define MIN_STEPS_HAS_CONTACT | + | |
- | | + | |
- | is below this value. Set to 0 to disable the check (Always move fast to the contact point) | + | |
- | | + | |
- | 0 = kein Anfahrruckler | + | |
- | TODO: evtl. muss die Routine, die das Getriebespiel " | + | |
- | + | ||
- | #define ALWAYS_CALIBRATE_AT_START | + | |
- | + | ||
- | #define ADVANCED_REFERENCE_DETECTION | + | |
- | + | ||
- | + | ||
- | // | + | |
- | // *** OLED *** | + | |
- | // | + | |
- | #define OLED_TYP | + | |
- | #define USE_u8x8 | + | |
- | #define SHOW_POSITION_MAINSCREEN | + | |
- | + | ||
- | // | + | |
- | // ** Flashing & light setup *** | + | |
- | // | + | |
- | #define MOVING_FLASH_INVERS | + | |
- | #define MOVING_FLASH_MODE | + | |
- | #define HOUSE_BRIGHTNESS | + | |
- | + | ||
- | // | + | |
- | // *** sketch internal parameters *** | + | |
- | // | + | |
- | #define BITSCHIEBER | + | |
- | #define SPEED_POTI_MID_RANGE | + | |
- | #define SPEED_POTI_CENTER | + | |
- | + | ||
- | #define ANALOG_SPEED_DIVISOR | + | |
- | #define MIN_ANALOG_SPEED | + | |
- | + | ||
- | #define ALWAYS_CHECK_STEPS_ONE_TURN | + | |
- | + | ||
- | #define ASK_TO_UPDATE_ALL | + | |
- | + | ||
- | #define ALWAYS_SET_ZERO_IN_POS_DIR | + | |
- | + | ||
- | + | ||
- | // | + | |
- | // *** Sound Setup *** | + | |
- | // | + | |
- | #define USE_JQ6500_SERIAL | + | |
- | #define JQ6500_VOLUME | + | |
- | #define DELAY_TURN_START_SOUND | + | |
- | #define SOUND1_FILENR | + | |
- | #define SOUND2_FILENR | + | |
- | + | ||
- | // | + | |
- | // *** Pins *** | + | |
- | // | + | |
- | + | ||
- | // n/a --> alle aus dem Hauptsketch verwenden! | + | |
- | + | ||
- | + | ||
- | // | + | |
- | // *** DCC *** | + | |
- | // | + | |
- | + | ||
- | #define DCC_OFFSET | + | |
- | + | ||
- | #define DCC_WAITING_TIME | + | |
- | + | ||
- | #define DCC_MAERKLIN_7687_COMPATIBLE | + | |
- | + | ||
- | #if DCC_MAERKLIN_7687_COMPATIBLE == 1 | + | |
- | #define LAST_USED_DCC_ADDR | + | |
- | #else | + | |
- | #define LAST_USED_DCC_ADDR | + | |
- | #endif | + | |
- | + | ||
- | // Momentan 26 (von 48) genutzte Ports = { 1, 2, 3, 5, 6, 8, 11, 13, 15, 17, 19, 21, 23, 25, 26, 27, 29, 30, 32, 35, 37, 39, 41, 43, 45, 47 } | + | |
- | + | ||
- | #if DCC_MAERKLIN_7687_COMPATIBLE == 1 | + | |
- | // Es werden nur für die Ports im ersten Halbkreis DCC-Adressen benötigt | + | |
- | // Bei 26 Ports braucht man hier also 13 DCC-Adressen (= 13 Zeilen) | + | |
- | + | ||
- | #define DCC_PORT_ADDR_LIST | + | |
- | DCC_PORT_ADDR(2, | + | |
- | DCC_PORT_ADDR(3, | + | |
- | DCC_PORT_ADDR(4, | + | |
- | DCC_PORT_ADDR(5, | + | |
- | DCC_PORT_ADDR(6, | + | |
- | DCC_PORT_ADDR(7, | + | |
- | DCC_PORT_ADDR(8, | + | |
- | DCC_PORT_ADDR(9, | + | |
- | DCC_PORT_ADDR(10, | + | |
- | DCC_PORT_ADDR(11, | + | |
- | DCC_PORT_ADDR(12, | + | |
- | DCC_PORT_ADDR(13, | + | |
- | + | ||
- | #else | + | |
- | // DCC-Adressen für den kompletten Vollkreis notwendig! | + | |
- | // Bei 26 Ports braucht man hier auch 26 DCC-Adressen (= 26 Zeilen) | + | |
- | + | ||
- | #define DCC_PORT_ADDR_LIST | + | |
- | DCC_PORT_ADDR(2, | + | |
- | DCC_PORT_ADDR(3, | + | |
- | DCC_PORT_ADDR(4, | + | |
- | DCC_PORT_ADDR(5, | + | |
- | DCC_PORT_ADDR(6, | + | |
- | DCC_PORT_ADDR(7, | + | |
- | DCC_PORT_ADDR(8, | + | |
- | DCC_PORT_ADDR(9, | + | |
- | DCC_PORT_ADDR(10, | + | |
- | DCC_PORT_ADDR(11, | + | |
- | DCC_PORT_ADDR(12, | + | |
- | DCC_PORT_ADDR(13, | + | |
- | DCC_PORT_ADDR(14, | + | |
- | DCC_PORT_ADDR(15, | + | |
- | DCC_PORT_ADDR(16, | + | |
- | DCC_PORT_ADDR(17, | + | |
- | DCC_PORT_ADDR(18, | + | |
- | DCC_PORT_ADDR(19, | + | |
- | DCC_PORT_ADDR(20, | + | |
- | DCC_PORT_ADDR(21, | + | |
- | DCC_PORT_ADDR(22, | + | |
- | DCC_PORT_ADDR(23, | + | |
- | DCC_PORT_ADDR(24, | + | |
- | DCC_PORT_ADDR(25, | + | |
- | DCC_PORT_ADDR(26, | + | |
- | + | ||
- | // Bei mehr als 41 Einträgen/ | + | |
- | // Workaround: dann müssen die zusätzlichen Zeilen in das #define ... LIST_2 aufgenommen werden ;-) | + | |
- | + | ||
- | //#define DCC_PORT_ADDR_LIST_2 | + | |
- | // DCC_PORT_ADDR(28, | + | |
- | // DCC_PORT_ADDR(29, | + | |
- | // DCC_PORT_ADDR(30, | + | |
- | // DCC_PORT_ADDR(31, | + | |
- | // DCC_PORT_ADDR(32, | + | |
- | // DCC_PORT_ADDR(33, | + | |
- | // DCC_PORT_ADDR(34, | + | |
- | // DCC_PORT_ADDR(35, | + | |
- | // DCC_PORT_ADDR(36, | + | |
- | // DCC_PORT_ADDR(37, | + | |
- | // DCC_PORT_ADDR(38, | + | |
- | // DCC_PORT_ADDR(39, | + | |
- | // DCC_PORT_ADDR(40, | + | |
- | // DCC_PORT_ADDR(41, | + | |
- | // DCC_PORT_ADDR(42, | + | |
- | // DCC_PORT_ADDR(43, | + | |
- | // DCC_PORT_ADDR(44, | + | |
- | // DCC_PORT_ADDR(45, | + | |
- | // DCC_PORT_ADDR(46, | + | |
- | // DCC_PORT_ADDR(47, | + | |
- | // DCC_PORT_ADDR(48, | + | |
| | ||
- | #endif | ||
- | |||
- | // ggf. hier weitere Zeilen ergänzen, wenn zusätzliche DCC-Befehle für weitere Ports benötigt werden | ||
- | // die letzte DCC-Adresse (hier 241) muss sich oben aus der # | ||
- | |||
- | |||
- | // | ||
- | // *** Tastenauswertung *** | ||
- | // | ||
- | |||
- | // Das #define definiert die 4 Schwellwerte für die 4 Taster auf der Panelplatine hier in der Config-Datei | ||
- | // Bei Änderungen | ||
- | |||
- | #define BUTTON_THRESHOLDS | ||
- | {327, 284, 310, 319}, \ | ||
- | {696, 670, 284, 622}, \ | ||
- | {872, 831, 310, 622} | ||
- | |||
- | #define HOME_RUN_PORT 8 // wird bei der Tastersteuerung verwendet, bei einem entsprechenden Tastendruck fährt die DS zum angegebenen Port | ||
- | |||
- | /* folgende Aktionen stehen für die Taster zur Verfügung: | ||
- | | ||
- | B_Toggle_House() | ||
- | B_Toggle_Sound() | ||
- | B_Toggle_Signal_House() | ||
- | B_Toggle_Signal_Opposite() | ||
- | B_Signal_House_red() | ||
- | B_Signal_House_white() | ||
- | B_Signal_Opp_red() | ||
- | B_Signal_Opp_white() | ||
- | B_U_Turn_CW() | ||
- | B_Home_Run() | ||
- | B_Toggle_Flash() | ||
- | Play_Sound(n) | ||
- | */ | ||
- | |||
- | // Hier den Tastern die Aktion zuordnen (kann man auch mehrfach machen, dann ";" | ||
- | |||
- | #define BUTTON_1 | ||
- | #define BUTTON_2 | ||
- | #define BUTTON_3 | ||
- | #define BUTTON_4 | ||
- | |||
- | </ | ||
- | |||
- | ==== LocoTurn V1.1 / V1.2 ==== | ||
- | |||
- | In der Version V1.1 sind einige #defines dazugekommen oder wurden umbenannt. Die folgende Turntable_config.h ist nur mit der entsprechenden ino-Version (1.1 oder 1.2) lauffähig. | ||
- | < | ||
- | // | ||
- | // Benutzer-spezifische Parameter | ||
- | // | ||
- | /* | ||
Die Parameter hier dominieren diejenigen aus dem Hauptprogramm " | Die Parameter hier dominieren diejenigen aus dem Hauptprogramm " | ||
Falls ein bestimmter Parameter hier nicht definiert wurde, wird ein default-Wert aus dem Hauptsketch verwendet! | Falls ein bestimmter Parameter hier nicht definiert wurde, wird ein default-Wert aus dem Hauptsketch verwendet! | ||
Zeile 502: | Zeile 86: | ||
// | // | ||
// Parameterset 1: Wantai-Stepper oder StepperOnline-Stepper ohne Getriebe, 400 Steps pro Umdrehung, 6400 Micro-Steps | // Parameterset 1: Wantai-Stepper oder StepperOnline-Stepper ohne Getriebe, 400 Steps pro Umdrehung, 6400 Micro-Steps | ||
- | // 26 Gleisabgänge (= Ports) domapi-Anlage | + | // 24 Gleisabgänge (= Ports) domapi-Anlage |
// | // | ||
Zeile 527: | Zeile 111: | ||
// *** Debugging*** | // *** Debugging*** | ||
// | // | ||
- | #define ENABLE_DPRINTF | + | #define ENABLE_DPRINTF |
Zeile 561: | Zeile 145: | ||
#define HOUSE_LIGHT_MODUS | #define HOUSE_LIGHT_MODUS | ||
+ | |||
+ | #define WS2811_R_G_OUTPUT_SWAPPED | ||
// | // | ||
Zeile 566: | Zeile 152: | ||
// | // | ||
- | /* - Die Anzahl verwendeter Ports muss bei PORT_CNT, die Portnummern | + | / |
- | - Weiterhin | + | |
- | - Die letzte genutzte | + | - Wenn man PARTLY_USED_PORTS auf 1 setzt, müssen PARTLY_USED_PORTS_REFERENCE ausgewählt und die Portnummern |
- | - Und die Polarisierung muss unten eingestellt werden. POLARISATION_CHANGE_PORT oder POLARISATION_RELAIS_LIST. | + | und zwar die jeweiligen Nummern der Drehscheiben-Abgänge |
+ | - Für die Signalsteuerung ist pro genutztem | ||
+ | - Weiterhin muss die Polarisierung unten eingestellt werden. Entweder als von bis Wert POLARISATION_CHANGE_PORT_START bzw. _END oder als Liste POLARISATION_RELAIS_LIST mit der gewünschten Polarisierung. | ||
+ | - Die genutzten | ||
+ | - Weitere Infos: https:// | ||
*/ | */ | ||
- | #define PORT_CNT | + | #define PORT_CNT |
- | #define PARTLY_USED_PORTS | + | #define PARTLY_USED_PORTS |
#if PARTLY_USED_PORTS | #if PARTLY_USED_PORTS | ||
#define PARTLY_USED_PORTS_REFERENCE | #define PARTLY_USED_PORTS_REFERENCE | ||
# | # | ||
- | #define PORT_CNT | + | #define PORT_CNT |
- | // Gleis 1 = 9: | + | // die folgende Tabelle enthält alle genutzten Ports (aktive und passive), die man später anfahren kann. |
- | #define PARTLY_USED_PORTS_TAB | + | // nicht enthaltene Portnummern (= inaktive Ports) können nicht angefahren werden und werden bei Drehungen einfach überprungen! |
+ | // die Nummern sind i.d.R. nicht fortlaufendend, | ||
+ | // hier ist alles auf 48 Ports bezogen, davon werden 24 genutzt | ||
+ | #define PARTLY_USED_PORTS_TAB | ||
#define SHOW_REAL_PORT | #define SHOW_REAL_PORT | ||
Zeile 600: | Zeile 193: | ||
Man kann das Raster, in dem die Ports initial angelegt werden auch kleiner machen, z.B. 0,1 Grad genau. Hierzu muss man folgendes eintragen: | Man kann das Raster, in dem die Ports initial angelegt werden auch kleiner machen, z.B. 0,1 Grad genau. Hierzu muss man folgendes eintragen: | ||
- | #define PORT_CNT | + | #define PORT_CNT |
- | #define PARTLY_USED_PORTS | + | #define PARTLY_USED_PORTS |
#if PARTLY_USED_PORTS | #if PARTLY_USED_PORTS | ||
- | # | + | # |
# | # | ||
# | # | ||
- | # | + | # |
#endif | #endif | ||
Zeile 623: | Zeile 216: | ||
// *** Signalsteuerung *** | // *** Signalsteuerung *** | ||
// | // | ||
- | #define ADVANCED_SIGNAL_CONTROL | + | #define ADVANCED_SIGNAL_CONTROL |
// Option 1: wenn PARTLY_USE_PORTS = 0 | // Option 1: wenn PARTLY_USE_PORTS = 0 | ||
+ | // Wenn man alle Ports anfahren können soll, hie z.B. 48, dann brauchen wir eine Liste mit 48 Nullen und Einsen | ||
// Gleisabgang | // Gleisabgang | ||
- | // #define PORT_TYPE | + | // #define PORT_TYPE |
// Option 2: wenn PARTLY_USE_PORTS = 1 | // Option 2: wenn PARTLY_USE_PORTS = 1 | ||
- | #define PORT_TYPE | + | // als Beispiel hier: bei 24 Ports sind einige aktiv, einige sind blind! Wir brauchen 24 Nullen und Einsen |
- | // als Beispiel hier: bei 26 Ports sind einige aktiv, einige sind blind! | + | // Gleisabgang |
+ | #define PORT_TYPE | ||
Zeile 640: | Zeile 236: | ||
#define POLARISATION_RELAIS_INVERS | #define POLARISATION_RELAIS_INVERS | ||
- | #define POLARISATION_CHANGE_PORT_START | + | #define POLARISATION_CHANGE_PORT_START |
- | #define POLARISATION_CHANGE_PORT_END | + | #define POLARISATION_CHANGE_PORT_END |
/* Teilt die Drehscheibe für die Polarisierung quasi in 2 Hälften. | /* Teilt die Drehscheibe für die Polarisierung quasi in 2 Hälften. | ||
Zeile 722: | Zeile 318: | ||
TODO: evtl. muss die Routine, die das Getriebespiel " | TODO: evtl. muss die Routine, die das Getriebespiel " | ||
- | #define ALWAYS_CALIBRATE_AT_START | + | #define ALWAYS_CALIBRATE_AT_START |
#define ADVANCED_REFERENCE_DETECTION | #define ADVANCED_REFERENCE_DETECTION | ||
Zeile 767: | Zeile 363: | ||
#define USE_SOUND_SERIAL | #define USE_SOUND_SERIAL | ||
- | #define SOUNDMODULE_VOLUME | + | #define SOUNDMODULE_VOLUME |
#define DELAY_TURN_START_SOUND | #define DELAY_TURN_START_SOUND | ||
Bei Verwendung eines DFPlayers ca. 300 ms dazu addieren, da dieses Soundmodul verzögert startet über softwareserial*/ | Bei Verwendung eines DFPlayers ca. 300 ms dazu addieren, da dieses Soundmodul verzögert startet über softwareserial*/ | ||
Zeile 799: | Zeile 395: | ||
// | // | ||
- | #define DCC_OFFSET | + | #define DCC_OFFSET |
#define DCC_WAITING_TIME | #define DCC_WAITING_TIME | ||
- | #define DCC_MAERKLIN_7687_COMPATIBLE | + | #define DCC_MAERKLIN_7687_COMPATIBLE |
+ | // 0 = wir berauchen für alle Ports DCC-Adressen um sie anfahren zu können ==> wird normalerweise bei Anlagen ohne PC-Steuerung verwendet! | ||
#if DCC_MAERKLIN_7687_COMPATIBLE == 1 | #if DCC_MAERKLIN_7687_COMPATIBLE == 1 | ||
- | #define LAST_USED_DCC_ADDR | + | // sollte man nur verwenden, wenn man mit einer PC-Steuerung arbeitet |
+ | | ||
#else | #else | ||
- | #define LAST_USED_DCC_ADDR | + | // wenn man ohne PC-Steuerung arbeitet |
+ | | ||
#endif | #endif | ||
- | // Momentan | + | // Momentan |
#if DCC_MAERKLIN_7687_COMPATIBLE == 1 | #if DCC_MAERKLIN_7687_COMPATIBLE == 1 | ||
+ | // sollte man nur verwenden, wenn man mit einer PC-Steuerung arbeitet | ||
// Es werden nur für die Ports im ersten Halbkreis DCC-Adressen benötigt | // Es werden nur für die Ports im ersten Halbkreis DCC-Adressen benötigt | ||
- | // Bei 26 Ports braucht man hier also 13 DCC-Adressen (= 13 Zeilen) | + | // Bei 24 Ports braucht man hier also 12 DCC-Adressen (= 12 Zeilen) |
+ | // Die erste Zahl in der Klammer ist immer fortlaufend und startet bei 1. Sie hat nichts mit der Portnummer oben zu tun (die kann nicht-fortlaufend sein). | ||
+ | // Pro DCC-Adresse gibt es 2 Befehle bzw. Richtungen: RED und GRN | ||
#define DCC_PORT_ADDR_LIST | #define DCC_PORT_ADDR_LIST | ||
Zeile 828: | Zeile 429: | ||
DCC_PORT_ADDR(10, | DCC_PORT_ADDR(10, | ||
DCC_PORT_ADDR(11, | DCC_PORT_ADDR(11, | ||
- | DCC_PORT_ADDR(12, | + | DCC_PORT_ADDR(12, |
- | | + | |
+ | |||
#else | #else | ||
+ | // wenn man ohne PC-Steuerung arbeitet | ||
// DCC-Adressen für den kompletten Vollkreis notwendig! | // DCC-Adressen für den kompletten Vollkreis notwendig! | ||
- | // Bei 26 Ports braucht man hier auch 26 DCC-Adressen (= 26 Zeilen) | + | // Bei 24 Ports braucht man hier auch 24 DCC-Adressen (= 24 Zeilen) |
#define DCC_PORT_ADDR_LIST | #define DCC_PORT_ADDR_LIST | ||
Zeile 858: | Zeile 460: | ||
DCC_PORT_ADDR(22, | DCC_PORT_ADDR(22, | ||
DCC_PORT_ADDR(23, | DCC_PORT_ADDR(23, | ||
- | DCC_PORT_ADDR(24, | + | DCC_PORT_ADDR(24, |
- | DCC_PORT_ADDR(25, | + | |
- | DCC_PORT_ADDR(26, | + | |
// Bei mehr als 41 Einträgen/ | // Bei mehr als 41 Einträgen/ | ||
Zeile 892: | Zeile 492: | ||
// ggf. hier weitere Zeilen ergänzen, wenn zusätzliche DCC-Befehle für weitere Ports benötigt werden | // ggf. hier weitere Zeilen ergänzen, wenn zusätzliche DCC-Befehle für weitere Ports benötigt werden | ||
- | // die letzte DCC-Adresse | + | // die letzte DCC-Adresse muss sich oben aus der # |
Zeile 904: | Zeile 504: | ||
#define BUTTON_THRESHOLDS | #define BUTTON_THRESHOLDS | ||
- | #define HOME_RUN_PORT | + | #define HOME_RUN_PORT |
/* folgende Aktionen stehen für die Taster zur Verfügung: | /* folgende Aktionen stehen für die Taster zur Verfügung: | ||
Zeile 925: | Zeile 525: | ||
// Hier den Tastern die Aktion zuordnen (kann man auch mehrfach machen, dann ";" | // Hier den Tastern die Aktion zuordnen (kann man auch mehrfach machen, dann ";" | ||
+ | // #define BUTTON_n ohne weitere Zuordnung deaktiviert den Knopf bzw. löst keine Aktion aus, z.B. "# | ||
// kurzer Tastendruck: | // kurzer Tastendruck: | ||
- | #define BUTTON_1 | + | #define BUTTON_1 |
#define BUTTON_2 | #define BUTTON_2 | ||
#define BUTTON_3 | #define BUTTON_3 |