Benutzer-Werkzeuge

Webseiten-Werkzeuge


anleitungen:bauanleitungen:locoturn_v10:150_locoturn_parameter

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
anleitungen:bauanleitungen:locoturn_v10:150_locoturn_parameter [2024/09/02 13:25] domapianleitungen: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**, **USE_SOUND**, **USE_SERIAL_INPUT** etc. steuern, was der Sketch alles später an Funktionen bietet.+  * Einige #defines wie **USE_DCC**, **USE_SOUND**, **USE_SERIAL_INPUT** etc. steuern, was der Sketch alles später an Funktionen bietet, also, ob DCC, Sound und Eingaben über den seriellen Monitor verwendet werden.
  
   * 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 "unkontrolliert herumschleicht".   * 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 "unkontrolliert herumschleicht".
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 von PC-Steuerungsprogrammen i.d.R. auf 1 gesetzt werden. 
 + 
 +  * Ü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 zu definieren, wenn man nicht alle vorgesehenen DCC-Adressen benötigt und vom vorgegebenen DCC_Adressraum abweicht: #define **LAST_USED_DCC_ADDR**.+  * Ebenso ist die letzte verwendete DCC Adresse anzupassen, wenn man nicht alle vorgesehenen DCC-Adressen benötigt: #define **LAST_USED_DCC_ADDR**.
      
   * 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 61: Zeile 63:
  
  
-====== Beispielkonfigurationen ====== +====== Beispielkonfiguration ======
-==== 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:+
  
-<code> +Ab 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 höher) lauffähig.
-//================================================================================================================================================================== +
-// Benutzer-spezifische Parameter +
-//================================================================================================================================================================== +
-/* +
-    Die Parameter hier dominieren diejenigen aus dem Hauptprogramm "Turntable"+
-    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 des Hauptprogrammes bleiben die Einstellungen aus diesem Reiter erhalten! +
-*/+
  
 +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, ergänzt durch die jeweiligen Kapitel im Wiki:
  
 +<code>
 //================================================================================================================================================================== //==================================================================================================================================================================
-// Parameterset 1: Wantai-Stepper oder StepperOnline-Stepper ohne Getriebe, 400 Steps pro Umdrehung, 6400 Micro-Steps +// Benutzer-spezifische Parameter für V 1.4
-// 26 Gleisabgänge (= Ports) domapi-Anlage+
 //================================================================================================================================================================== //==================================================================================================================================================================
- 
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
-// Zentrale #defines zum Ein-/Ausschalten von Funktionen, um evtl. Speicher für Tests zu sparen! 
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
- 
-#define USE_DCC                                       // 1 = use DCC interface          0 = disable all DCC routines 
- 
-#define USE_SOUND                                     // 1 = Sound features enabled     0 = Sound features disabled 
- 
-#define USE_SERIAL_INPUT                    0           // 1 = Serial monitor input activated   0 = no processing of serial commands  --> sollte in finaler Version ausgeschaltet sein, da man auf der Anlage später nicht über den PC steuert 
-#define USE_VERBOSE                                   // 1 = ausführliches Menü         0 = gekürztes Menü / nur wichtigste Befehle 
- 
-#define USE_OLED                            1           // 1 = use an OLED Display (could be disabled ("0") to save memory for tests ~6200 Bytes FLASH !!!). The outputs are sent to RS232 (serial monitor), then. 
-#define USE_BUTTONS                                      // Nutzung der 4 Taster auf der roten Panelplatine über analogen Eingang A0; es können auch zwei Taster gleichzeitig gedrückt sein 
- 
-#define SHOW_STATUS                                   // 1 = Status-Screen im Menü aufrufbar, zeigt einige aktuelle Infos (Position, Ports, Steps/Umdrehung usw.)     0 = nicht aufrufbar, spart Speicher 
- 
-#define USE_POTI                            1           /* 0 = Drehen des Poti löst keine Drehscheibenbewegung aus       1 = Poti für manuelle Bewegungen wird benutzt 
-                                                           Achtung: Falls kein Poti angeschlossen wird, ist dieser Wert auf 0 zu setzen. Andernfalls schleicht die Drehscheibe u.U. vor sich hin.*/ 
- 
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
-// *** Debugging*** 
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
-#define ENABLE_DPRINTF                      1           // Debug Ausgaben ein, zu Beginn evtl. auf 1 lassen, damit man sich die gespeicherten Positionswerte im seriellen Monitor ansehen kann 
- 
- 
-// Typische Konfigurationen: 
-// ========================= 
-// Normalbetrieb auf der Anlage 
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
-//#define USE_DCC                                       // 1 = use DCC interface          0 = disable all DCC routines 
-//#define USE_SOUND                                     // 1 = Sound features enabled     0 = Sound features disabled 
-//#define USE_SERIAL_INPUT                    0           // 1 = Serial monitor input activated   0 = no processing of serial commands  --> sollte in finaler Version ausgeschaltet sein, da man auf der Anlage später nicht über den PC steuert 
-//#define USE_VERBOSE                                   // 1 = ausführliches Menü         0 = gekürztes Menü / nur wichtigste Befehle 
-//define SHOW_STATUS                          1 
-//#define ENABLE_DPRINTF                      0           // Debug Ausgaben aus 
- 
-// Test der Steuerung und Einstellung der DS 
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
-//#define USE_DCC                                       // 1 = use DCC interface          0 = disable all DCC routines 
-//#define USE_SOUND                                     // 1 = Sound features enabled     0 = Sound features disabled 
-//#define USE_SERIAL_INPUT                    1           // 1 = Serial monitor input activated   0 = no processing of serial commands  --> sollte in finaler Version ausgeschaltet sein, da man auf der Anlage später nicht über den PC steuert 
-//#define USE_VERBOSE                                   // 1 = ausführliches Menü         0 = gekürztes Menü / nur wichtigste Befehle 
-//#define SHOW_STATUS                         0 
-//#define ENABLE_DPRINTF                      1           // Debug Ausgaben ein 
- 
- 
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
-// Steuerung Beleuchtungseffekte 
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
-#define LEDS_ON_BOARD                                              // Beleuchtungssteuerung über die LEDs auf der Platine (ohne WS28xx, ohne MLL) 
-#define WS281X_BOARD                        2                        // über eine kleine Bühnenplatine 
-#define MOBALEDLIB                          3                        // über die MLL 
- 
-#define LIGHT_CONTROL                       WS281X_BOARD             // MOBALEDLIB //WS281X_BOARD  //LEDS_ON_BOARD  
- 
-#define HOUSE_LIGHT_MODUS                                          // nur für direktes WS281x-Board: 0 = einfaches Ein/Aus  1 = Fade in/out  2 = Neonflicker 
- 
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
-// *** 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                            48                      // Number of ports/Gleisabgänge, hier symmetrische Fleischmann-Drehscheibe 
-#define PARTLY_USED_PORTS                                         // 0 = all ports can be selected, 1 = only valid ports can be used 
- 
-#if PARTLY_USED_PORTS                                               /* If not all ports of the turntable should be selectable the following table could define the used ports. The used ports are defined as a reference to a fully defined table*/ 
-    #define PARTLY_USED_PORTS_REFERENCE     48                      // which has PARTLY_USED_PORTS_REFERENCE ports (Gesamtanzahl Ports der FLM Drehscheibe = 48 entspricht 7,5° Raster) 
-    #undef  PORT_CNT                                                // The number of real used ports is given in PORT_CNT. 
-    #define PORT_CNT                        26                      // If the used ports should be given in degree PARTLY_USED_PORTS_REFERENCE is set to 360; wir nutzen nur 26 von 48 Gleisabgängen/Ports 
- 
-    // Gleis 1 = 9:00-Position Einfahrgleis von links (Sensor befindet sich einen Port rechts davon) passt besser zur Zählung von TC9 
-    #define PARTLY_USED_PORTS_TAB           { 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 }        // The table must have PORT_CNT entries which are sorted in ascending order 
- 
-#endif 
- 
-#define CIRCUMFERENCE                       980.15                  // 312 mm * Pi = circumference of the turntable [mm]; hier eine FLM-Drehscheibe mit 312 mm Bühnen-Länge 
- 
- 
-#define OFFSET_PORT_POSITION                0                      // Um die Feinjustierung zu vereinfachen, wird bei Ports mit Defaultwerten die Position um diese Anzahl Steps entfernt angefahren (CW negativ, CCW positiv); nur bei unsymmetriwchen DS nutzen! 
-#define OFFSET_PORT_POSITION_U_TURN                              // parameter used for U-turns 
- 
- 
 /* /*
-Tipp: +    26.01.2024finale Anpassung der Port-Konfiguration an PIE-Anlage
------ +
- +
-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                            48                      // Der Wert hier ist eigentlich egal, er wird weiter unten "überschrieben" +
-#define PARTLY_USED_PORTS                                         // 1 = only valid ports can be used +
-  +
-#if  PARTLY_USED_PORTS                                           +
-     #define PARTLY_USED_PORTS_REFERENCE    3600                    // Einteilung der DS in 3600 Ports +
-     #undef  PORT_CNT +
-     #define PORT_CNT                       4 +
-     #define PARTLY_USED_PORTS_TAB          {300, 1350, 2100, 3150} // davon nutzen wir nur 4 Ports an diesen Positionen +
-#endif +
-  +
-Im Prinzip teilt das den Vollkreis in 3600 Ports/Gleisabgänge, von denen aber nur 4 genutzt werden, die quasi an beliebiger Stelle liegen können. Das Beispiel oben hat 4 anfahrbare Ports bei: +
-  +
-Grad                   Uhrzeit +
-30°                       1 +
-135°                   "halb"+
-210°                      7 +
-315°                   "halb" 11 +
-*/ +
- +
- +
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------- +
-// *** Signalsteuerung *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-#define ADVANCED_SIGNAL_CONTROL                                  // Steuerung der Signale in Abhängigkeit, ob die DS bei Stillstand an einem aktiven/gültigen oder blinden Port steht (= 1). Einfache Signalsteuerung = 0. +
- +
-// Gleisabgang                                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 +
-#define PORT_TYPE                            1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 // Port-Type = 1 if there is an active / valid railway connected,  0 = blind port (no railway connected)The table must have PORT_CNT entriesRequired for advanced signal control (signal = red if turntable is no at a valid port) +
-// als Beispiel hierbei 26 Ports sind einige aktiv, einige sind blind! +
- +
- +
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------- +
-// *** Polarization relays *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-#define POLARISATION_RELAIS_PIN             A1                       // Polarisations-Relais for dual rail system (Set to -1 if not used) +
-#define POLARISATION_RELAIS_INVERS          0                        // 0: Pin is set to high, if  POLARISATION_RELAIS_LIST[Port] = 1      1: Pin is set to low, if  0 +
- +
-#define POLARISATION_CHANGE_PORT_START      5 +
-#define POLARISATION_CHANGE_PORT_END        20 +
- +
-/*  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 der Scheibe ist Polung 1, die andere Polung 2. +
-    Spart einige Bytes ;-) +
-    -1 = Polarisation gemäß der unten stehenden Liste +
-*/ +
- +
-//#define POLARISATION_RELAIS_LIST            0, 1, 0, 1 , 0, 1, 0, 1 ...  // Pro genutztem DS-Port hier ein Eintrag in der Liste mit 0 oder 1 +
- +
- +
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------- +
-// *** Direction and control settings *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-#define ROTATIONSWITCH_DIRECTION            -1                      /* Set from 1 to -1 to change the direction of the rotation switch +
-                                                                       -1 = Drehen nach rechts höhere Port-Nr.; links = niedrigere Port-Nr.*/ +
- +
-#define USE_ROTARY_ENCODER_MOVEMENT                               // 0 = Drehen des Encoders löst keine Drehscheibenbewegung aus, Menüs fkt. aber     1 = Encoder steuert die DS und Menü fkt. +
- +
-#define SPEED_POTI_DIRECTION                -1                      // Set to -1 to change the direction of the speed poti; bei domapi-Platine "-1" +
- +
-#define ROTATIONSWITCH_MENU_DIR                                   // Set from 1 to -1 to change the direction of the rotation switch in the menu: Rechts-Drehung = Zeile nach unten im Menü +
-#define TURNTABLE_DIRECTION                                       // Set 1 to -1 to change the rotation / port number direction, abhängig von der Polung der Motorspulen --> einfach ausprobieren! +
- +
- +
-#define ENCODER_LOGIC                                             / 1 = Drehencoder drehen während Stillstand ermöglicht Portauswahl +
-                                                                            - 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                                 // 1 = Richtungsänderung erlaubt, wenn anderer Befehl bei bereits gestarteter Bewegung kommt    0 = keine Richtungsänderung, eine einmal eingeschlagene Richtung wird beibehalten +
- +
-#define MOVE_STATUS_INVERS                  1                       /* 0 = normal value +
-                                                                       1 = Invert the level of the S88_MOVING_PIN: +
-                                                                       - 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               6400                   // manuelle Vorgabe der Anzahl Steps pro Umdrehung; "0" = automatische Ermittlung +
- +
-#define FIXED_STEPS_HAS_CONTACT                                  // manuelle Vorgabe des Getriebespiels; "-1": dann wird das Spiel automatisch ermittelt, Werte >= 0 --> manuelle Vorgabe +
- +
-#define NOT_ENABLE_PIN                      6                       /* Set to -1 if the stepper driver has an automatic power mode like the TMC2100 +
-                                                                       The pin of the module must be left open (std 6) +
-                                                                       Use Pin 6 for TMC2208 */ +
-#define ENABLE_ALWAYS_ON                    1                       /* Vermeidet bei meinem aktuellen Steppermotor ohne Getriebe das Ruckeln in der Start-/Endposition +
-                                                                       Nachteil: Motor wird dauerhaft angesteuert und wird warm! +
-                                                                       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                 150                     /* Steps to speed up the stepper to prevent loosing steps +
-                                                                       Set to 50 if 1/16 steps are used (MS1 - MS3 connected do +5V)*/ +
- +
-#define MOVE_SPEED1                         600                     // Default speed and activated when DCC_SET_SPEED1_ADDR is received +
-#define TURNBACK_SPEED                      600                     // Speed used for TurnBackAndSetZero +
- +
-#define USE_TURNBACK                        0                       // 1 = Turn back & set 0-point will be executed if 0-point is detected in negative rotation direction    0 = not used +
- +
-#define MOVE_SPEED2                         400                     // Speed activated when DCC_SET_SPEED2_ADDR is received +
-#define MOVE_SPEED3                         200                     // Speed activated when DCC_SET_SPEED3_ADDR is received +
-#define MOVE_SPEED4                         2600                    // Speed activated when DCC_SET_SPEED4_ADDR is received +
- +
-#define CLEARANCE_TEST_SPEED                1200                     // Speed used in the clearance test +
-#define CALIBRATE_SPEED_FAST                1200                     // Speed used for the zero point and total number of steps detection +
-#define CALIBRATE_SPEED_SLOW                200                      // Slow speed used for the advanced zero point detection +
-#define ZERO_DETECTION_OFFSET               60                       // Used for moving a little bit away from Hall-Sensor   +
- +
-#define MIN_STEPS_HAS_CONTACT                                     /* Typical value = 30. +
-                                                                       Don't move fast to the contact point in the "Poti" mode if Steps_Has_Contact +
-                                                                       is below this value. Set to 0 to disable the check (Always move fast to the contact point) +
-                                                                       Problem: The Steps_Has_Contact detection may be not accurate because of sensor errors +
-                                                                       0 = kein Anfahrruckler +
-                                                                       TODO: evtl. muss die Routine, die das Getriebespiel "überbrückt" direkt in der Loop aufgerufen werden, wenn die eigentlich Bewegung gestartet wird*/ +
- +
-#define ALWAYS_CALIBRATE_AT_START                                 // Set to 1 to calibrate the 0-position (Hallsensor) every time when the program is started. Helps to compensate little jumps of the turntable when turned on. +
- +
-#define ADVANCED_REFERENCE_DETECTION        1                       // "1" fährt den Hallsensor beim 0-Punkt Kalibieren schnell an, dreht ein Stückchen zurück und fährt ihn nochmals langsam an und speichert die Referenzposition +
- +
- +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-// *** OLED *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-#define OLED_TYP                            13                      // Tested with the following displays 87, 91, 96, 13 +
-#define USE_u8x8                            1                       // 1 bei 96 und 13 +
-#define SHOW_POSITION_MAINSCREEN            1                       // Positionsanzeige auf dem Hauptscreen +
- +
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------- +
-// ** Flashing & light setup *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-#define MOVING_FLASH_INVERS                                       // Normal: 0 = LED connected to GND +
-#define MOVING_FLASH_MODE                                         // 1 = Blink, 2 double flash +
-#define HOUSE_BRIGHTNESS                    255                     // Brightness of house LED, valid values 0 - 255, 0 = off, 255 = very bright, saves separate resistor ;-) +
- +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-// *** sketch internal parameters *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-#define BITSCHIEBER                                                // 1 = direkte Bitmanipulation    0 = digitalRead/Write, pinMode, FastPin  ToDo: Prüfen, ob irgendwelche Libs noch digitlaRead etc. nutzen +
-#define SPEED_POTI_MID_RANGE                35                       // Range (+/-) of the speed poti which is considered as 0 +
-#define SPEED_POTI_CENTER                   521                      // Center position of the speed poti (Normally 512) +
- +
-#define ANALOG_SPEED_DIVISOR                40                       // Divisor used to calculate the analog speed with the poti (std 8, 50) +
-#define MIN_ANALOG_SPEED                    40                       // 1 => 10 sec reaction time ;-(   Reaction time = 10 sec / MIN_ANALOG_SPEED +
- +
-#define ALWAYS_CHECK_STEPS_ONE_TURN                                // Always check the steps for one turn at power on +
- +
-#define ASK_TO_UPDATE_ALL                                          // = 1: Ask to update all ports when Port 1 is redefined > 1: Ask to update all ports for every port +
- +
-#define ALWAYS_SET_ZERO_IN_POS_DIR          1                        // 1 = Check and adjust the 0-position always, if the hall sensor has been detected    0 = only if 1 complete turn was moved +
- +
- +
-//----------------------------------------------------------------------------------------------------------------------------------------------------------------- +
-// *** Sound Setup *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-#define USE_JQ6500_SERIAL                   -1                       // SMART_JQ6500_SERIAL_PIN --[1K]-- TX; -1 = hardware serial is used (TX-Pin) +
-#define JQ6500_VOLUME                       25                       // Range: 0..30 (-1 = Don't change the volume) +
-#define DELAY_TURN_START_SOUND              7400                     // Delay before start moving if sound is played, hängt ab vom verwendeten soundfile; bei mir machen 7s Sinn! +
-#define SOUND1_FILENR                        1                       // sound/file number of JQ6500 for turntable start and running (Hupe, Anfahren und Drehen) +
-#define SOUND2_FILENR                        3                       // sound for turntable stop (aktuell nur die Hupe) +
- +
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------- +
-// *** Pins *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
- +
-// n/a --> alle aus dem Hauptsketch verwenden! +
- +
- +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------ +
-// *** DCC *** +
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ +
- +
-#define DCC_OFFSET                          0           // 0 = DCC addresses start at #211, using this parameter you can use other DCC ranges in case of using several turntables with one central station or you rewuire other address ranges +
- +
-#define DCC_WAITING_TIME                    350         // waiting time [ms] for further DCC-tickets before carrying out the DCC command +
- +
-#define DCC_MAERKLIN_7687_COMPATIBLE        1           // DCC-Befehle nur für den 1. Halbkreis der DS verwenden. In Verbindung mit der Drehrichtung kann trotzdem jeder Port so angefahren werden, dass das DS-Haus richtig steht +
- +
-#if DCC_MAERKLIN_7687_COMPATIBLE == 1 +
-    #define LAST_USED_DCC_ADDR              DCC_CHKADDR((235 + DCC_OFFSET), RED)   // die "235" ist an die tatsächlich verwendete letzte Adresse anzupassen! +
-#else +
-    #define LAST_USED_DCC_ADDR              DCC_CHKADDR((229 + PORT_CNT / 2 - 1 + DCC_OFFSET), GRN) +
-#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(1, (229 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(2, (229 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(3, (230 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(4, (230 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(5, (231 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(6, (231 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(7, (232 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(8, (232 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(9, (233 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(10, (233 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(11, (234 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(12, (234 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(13, (235 + DCC_OFFSET), RED) +
- +
-#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(1, (229 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(2, (229 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(3, (230 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(4, (230 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(5, (231 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(6, (231 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(7, (232 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(8, (232 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(9, (233 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(10, (233 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(11, (234 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(12, (234 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(13, (235 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(14, (235 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(15, (236 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(16, (236 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(17, (237 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(18, (237 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(19, (238 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(20, (238 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(21, (239 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(22, (239 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(23, (240 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(24, (240 + DCC_OFFSET), GRN), \ +
-    DCC_PORT_ADDR(25, (241 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(26, (241 + DCC_OFFSET), GRN) +
- +
-// Bei mehr als 41 Einträgen/Zeilen in dem obigen #define spinnt der Compiler! +
-// Workaround: dann müssen die zusätzlichen Zeilen in das #define ... LIST_2 aufgenommen werden ;-+
- +
-//#define DCC_PORT_ADDR_LIST_2         DCC_PORT_ADDR(27, (242 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(28, (242 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(29, (243 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(30, (243 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(31, (244 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(32, (244 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(33, (245 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(34, (245 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(35, (246 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(36, (246 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(37, (247 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(38, (247 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(39, (248 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(40, (248 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(41, (249 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(42, (249 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(43, (250 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(44, (250 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(45, (251 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(46, (251 + DCC_OFFSET), GRN), \ +
-//    DCC_PORT_ADDR(47, (252 + DCC_OFFSET), RED), \ +
-//    DCC_PORT_ADDR(48, (252 + DCC_OFFSET), GRN) +
          
-#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 #define-Formel bei LAST_USED_DCC_ADR ergeben !!! 
- 
- 
-//--------------------------------------------------------------------------------------------------------------------------------------------------------------- 
-// *** Tastenauswertung *** 
-//------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
- 
-// Das #define definiert die 4 Schwellwerte für die 4 Taster auf der Panelplatine hier in der Config-Datei 
-// Bei Änderungen  in der ino-Datei bleiben die individuellen Werte unten erhalten! 
- 
-#define BUTTON_THRESHOLDS    {970, 670, 831, 319}, \ 
-    {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()              Hausbeleuchtung ein/aus 
-    B_Toggle_Sound()              Sound ein/aus 
-    B_Toggle_Signal_House()       Signal Hausseite rot/weiß 
-    B_Toggle_Signal_Opposite()    Signal Gegenüber rot/weiß 
-    B_Signal_House_red()          Signal Haussseite rot 
-    B_Signal_House_white()        dito. weiß 
-    B_Signal_Opp_red()            Gegenüber rot 
-    B_Signal_Opp_white()          dito. weiß 
-    B_U_Turn_CW()                 180°-Drehung CW 
-    B_Home_Run()                  Anfahren der Home-Position 
-    B_Toggle_Flash()              Warnleuchte ein/aus 
-    Play_Sound(n)                 Sound n auf dem JQ6500 abspielen 
-*/ 
- 
-// Hier den Tastern die Aktion zuordnen (kann man auch mehrfach machen, dann ";" dazwischen!): 
- 
-#define BUTTON_1    B_Home_Run() 
-#define BUTTON_2    B_U_Turn_CW() 
-#define BUTTON_3    B_Toggle_House() 
-#define BUTTON_4    B_Toggle_Flash() 
- 
-</code> 
- 
-==== 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. 
-<code> 
-//================================================================================================================================================================== 
-// Benutzer-spezifische Parameter 
-//================================================================================================================================================================== 
-/* 
     Die Parameter hier dominieren diejenigen aus dem Hauptprogramm "Turntable"!     Die Parameter hier dominieren diejenigen aus dem Hauptprogramm "Turntable"!
     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 503: 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 528: Zeile 111:
 // *** Debugging*** // *** Debugging***
 //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-#define ENABLE_DPRINTF                                // Debug Ausgaben ein, zu Beginn evtl. auf 1 lassen, damit man sich die gespeicherten Positionswerte im seriellen Monitor ansehen kann+#define ENABLE_DPRINTF                                // Debug Ausgaben ein, zu Beginn evtl. auf 1 lassen, damit man sich die gespeicherten Positionswerte im seriellen Monitor ansehen kann
  
  
Zeile 562: Zeile 145:
  
 #define HOUSE_LIGHT_MODUS                                          // nur für direktes WS281x-Board: 0 = einfaches Ein/Aus  1 = Fade in/out  2 = Neonflicker #define HOUSE_LIGHT_MODUS                                          // nur für direktes WS281x-Board: 0 = einfaches Ein/Aus  1 = Fade in/out  2 = Neonflicker
 +
 +#define WS2811_R_G_OUTPUT_SWAPPED                                  // 0 = R und G Kanal sind nicht vertauscht, 1 = R und G Kanal sind vertauscht
  
 //------------------------------------------------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------------------------------------------------
Zeile 567: Zeile 152:
 //------------------------------------------------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
-/*  - Die Anzahl verwendeter Ports muss bei PORT_CNT, die Portnummern bei PARTLY_USED_PORTS_TAB eingetragen werden +/*  Folgende Einstellungen sind für die Port-Einrichtung der Drehscheibe am wichtigsten: 
-    - Weiterhin pro Port 0 oder 1 bei der Signalsteuerung PORT_TYPE. +    - Die Anzahl verwendeter Ports muss bei PORT_CNT eingetragen werden 
-    - Die letzte genutzte DCC-Adresse wird automatisch über eine Formel anhand der Anzahl Pors berechnet (LAST_USED_DCC_ADDR)+    - Wenn man PARTLY_USED_PORTS auf 1 setztmüssen PARTLY_USED_PORTS_REFERENCE ausgewählt und die Portnummern aufsteigend sortiert in die Liste PARTLY_USED_PORTS_TAB eingetragen werden,  
-    - Und die Polarisierung muss unten eingestellt werdenPOLARISATION_CHANGE_PORT oder POLARISATION_RELAIS_LIST.+      und zwar die jeweiligen Nummern der Drehscheiben-Abgänge 
 +    - Für die Signalsteuerung ist pro genutztem Port 0 oder 1 in der Liste PORT_TYPE einzutragen. 
 +    - 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 DCC-Adresse müssen definiert werden
 +    - Weitere Infos: https://wiki.mobaledlib.de/anleitungen/bauanleitungen/locoturn_v10/150_locoturn_parameter
 */ */
  
-#define PORT_CNT                            48                      // Number of ports/Gleisabgänge, hier symmetrische Fleischmann-Drehscheibe +#define PORT_CNT                            48                      // Gesamtanzahl Ports/Gleisabgänge, hier im Beispiel eine symmetrische Fleischmann-Drehscheibe mit 48 Ports im 7,5° Raster 
-#define PARTLY_USED_PORTS                                         // 0 = all ports can be selected, 1 = only valid ports can be used+#define PARTLY_USED_PORTS                                         // 0 = alle Ports (hier 48) können angefahren werden, 1 = nur gültige Ports (aktive und passive) können angefahren werden (hier die 24 in der Liste PARTLY_USED_PORTS_TAB)
  
 #if PARTLY_USED_PORTS                                               /* If not all ports of the turntable should be selectable the following table could define the used ports. The used ports are defined as a reference to a fully defined table*/ #if PARTLY_USED_PORTS                                               /* If not all ports of the turntable should be selectable the following table could define the used ports. The used ports are defined as a reference to a fully defined table*/
 #define PARTLY_USED_PORTS_REFERENCE         48                      // which has PARTLY_USED_PORTS_REFERENCE ports (Gesamtanzahl Ports der FLM Drehscheibe = 48 entspricht 7,5° Raster) #define PARTLY_USED_PORTS_REFERENCE         48                      // which has PARTLY_USED_PORTS_REFERENCE ports (Gesamtanzahl Ports der FLM Drehscheibe = 48 entspricht 7,5° Raster)
 #undef  PORT_CNT                                                    // The number of real used ports is given in PORT_CNT. #undef  PORT_CNT                                                    // The number of real used ports is given in PORT_CNT.
-#define PORT_CNT                            26                      // If the used ports should be given in degree PARTLY_USED_PORTS_REFERENCE is set to 360; wir nutzen nur 26 von 48 Gleisabgängen/Ports+#define PORT_CNT                            24                      // wir nutzen nur 24 von 48 Gleisabgängen/Ports
  
-// Gleis 1 = 9:00-Position Einfahrgleis von links (Sensor befindet sich einen Port rechts davonpasst besser zur Zählung von TC9 +// die folgende Tabelle enthält alle genutzten Ports (aktive und passive), die man später anfahren kann. 
-#define PARTLY_USED_PORTS_TAB           { 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 }        // The table must have PORT_CNT entries which are sorted in ascending order+// nicht enthaltene Portnummern (= inaktive Ports) können nicht angefahren werden und werden bei Drehungen einfach überprungen! 
 +// die Nummern sind i.d.R. nicht fortlaufendend, sondern geben die relative Position der Ports zur Gesamtanzahl Ports an. 
 +// hier ist alles auf 48 Ports bezogen, davon werden 24 genutzt 
 +#define PARTLY_USED_PORTS_TAB           { 1, 2, 3, 5, 8, 11, 13, 15, 17, 19, 21, 23, 25, 26, 27, 29, 32, 35, 37, 39, 41, 43, 45, 47 }        // The table must have PORT_CNT entries which are sorted in ascending order
  
 #define SHOW_REAL_PORT                      0                       // 0 = im OLED wird bei PARTLY_USED_PORTS = 1 die fortlaufende Portnummer der genutzten Ports angezeigt   1 = Anzeige des echten Ports (bei FLM-DS 1 - 48), Wert aus dem obigen Array #define SHOW_REAL_PORT                      0                       // 0 = im OLED wird bei PARTLY_USED_PORTS = 1 die fortlaufende Portnummer der genutzten Ports angezeigt   1 = Anzeige des echten Ports (bei FLM-DS 1 - 48), Wert aus dem obigen Array
Zeile 601: 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                            48                      // Der Wert hier ist eigentlich egal, er wird weiter unten "überschrieben" +    #define PORT_CNT                        48                      // Der Wert hier ist eigentlich egal, er wird weiter unten "überschrieben" 
-    #define PARTLY_USED_PORTS                   1                       // 1 = only valid ports can be used+    #define PARTLY_USED_PORTS               1                       // 1 = only valid ports can be used
  
     #if  PARTLY_USED_PORTS     #if  PARTLY_USED_PORTS
-     #define PARTLY_USED_PORTS_REFERENCE    3600                        // Einteilung der DS in 3600 Ports+     #define PARTLY_USED_PORTS_REFERENCE    3600                    // Einteilung der DS in 3600 Ports
      #undef  PORT_CNT      #undef  PORT_CNT
      #define PORT_CNT                       4      #define PORT_CNT                       4
-     #define PARTLY_USED_PORTS_TAB          {300, 1350, 2100, 3150}     // davon nutzen wir nur 4 Ports an diesen Positionen+     #define PARTLY_USED_PORTS_TAB          {300, 1350, 2100, 3150} // davon nutzen wir nur 4 Ports an diesen Positionen
     #endif     #endif
  
Zeile 624: Zeile 216:
 // *** Signalsteuerung *** // *** Signalsteuerung ***
 //------------------------------------------------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------------------------------------------------
-#define ADVANCED_SIGNAL_CONTROL                                  // Steuerung der Signale in Abhängigkeit, ob die DS bei Stillstand an einem aktiven/gültigen oder blinden Port steht (= 1). Einfache Signalsteuerung = 0.+#define ADVANCED_SIGNAL_CONTROL                                  // 1 = Steuerung der Signale in Abhängigkeit, ob die DS-Seite bei Stillstand an einem aktiven/gültigen oder passiven/blinden Port steht.   0 = Einfache Signalsteuerung.
  
 // 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                              1  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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 // Gleisabgang                              1  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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
-// #define PORT_TYPE                        1, 1, 1, 0, 0, 1, 0, 1, 0,  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0     // Port-Type = 1 if there is an active / valid railway connected,  0 = blind port (no railway connected). The table must have PORT_CNT entries. Required for advanced signal control (signal = red if turntable is no at a valid port)+// #define PORT_TYPE                        1, 1, 1, 0, 0, 1, 0, 1, 0,  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0     // Port-Type = 1 if there is an active / valid railway connected,  0 = passive/blind port (no railway connected). The table must have PORT_CNT entries. Required for advanced signal control (signal = red if turntable is no at a valid port)
  
 // Option 2: wenn PARTLY_USE_PORTS = 1 // Option 2: wenn PARTLY_USE_PORTS = 1
-#define PORT_TYPE                            1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 // Port-Type = 1 if there is an active / valid railway connected,  0 = blind port (no railway connected). The table must have PORT_CNT entries. Required for advanced signal control (signal = red if turntable is no at a valid port) +// 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                               1, 2, 3, 5, 8, 11, 13, 15, 17, 19, 21, 23, 25, 26, 27, 29, 32, 35, 37, 39, 41, 43, 45, 47  
 +#define PORT_TYPE                            1, 1, 1, 1, 1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  0,  0,  0,  0,  0,  0,  1,  0 // Port-Type = 1 if there is an active / valid railway connected,  0 = blind port (no railway connected). The table must have PORT_CNT entries. Required for advanced signal control (signal = red if turntable is no at a valid port) 
  
  
Zeile 641: Zeile 236:
 #define POLARISATION_RELAIS_INVERS          0                        // 0: Pin is set to high, if  POLARISATION_RELAIS_LIST[Port] = 1      1: Pin is set to low, if  0 #define POLARISATION_RELAIS_INVERS          0                        // 0: Pin is set to high, if  POLARISATION_RELAIS_LIST[Port] = 1      1: Pin is set to low, if  0
  
-#define POLARISATION_CHANGE_PORT_START      5 +#define POLARISATION_CHANGE_PORT_START      11 
-#define POLARISATION_CHANGE_PORT_END        20+#define POLARISATION_CHANGE_PORT_END        22
  
 /*  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 678: Zeile 273:
 #define DIRECTION_CHANGE_POSSIBLE                                 // 1 = Richtungsänderung erlaubt, wenn anderer Befehl bei bereits gestarteter Bewegung kommt    0 = keine Richtungsänderung, eine einmal eingeschlagene Richtung wird beibehalten #define DIRECTION_CHANGE_POSSIBLE                                 // 1 = Richtungsänderung erlaubt, wenn anderer Befehl bei bereits gestarteter Bewegung kommt    0 = keine Richtungsänderung, eine einmal eingeschlagene Richtung wird beibehalten
  
-#define MOVE_STATUS_INVERS                  1                       /0 = normal value +#define MOVE_STATUS_INVERS                  1                       /* Invert the level of the S88_MOVING_PIN: 
-                                                                       1 = Invert the level of the S88_MOVING_PIN: +                                                                       - 1 and turntable moving = Optokoppler sperrt. 
-                                                                       - 1 turntable moving = Optokoppler sperrt. +
                                                                        - 1 + Stillstand: OK steuert durch und erzeugt eine Rückmeldung.                                                                         - 1 + Stillstand: OK steuert durch und erzeugt eine Rückmeldung. 
                                                                        Viele Steuerungssoftwarepakete erwarten ein Signal, wenn die DS steht (d.h. angekommen ist)*/                                                                        Viele Steuerungssoftwarepakete erwarten ein Signal, wenn die DS steht (d.h. angekommen ist)*/
Zeile 724: Zeile 318:
                                                                        TODO: evtl. muss die Routine, die das Getriebespiel "überbrückt" direkt in der Loop aufgerufen werden, wenn die eigentlich Bewegung gestartet wird*/                                                                        TODO: evtl. muss die Routine, die das Getriebespiel "überbrückt" direkt in der Loop aufgerufen werden, wenn die eigentlich Bewegung gestartet wird*/
  
-#define ALWAYS_CALIBRATE_AT_START                                 // Set to 1 to calibrate the 0-position (Hallsensor) every time when the program is started. Helps to compensate little jumps of the turntable when turned on.+#define ALWAYS_CALIBRATE_AT_START                                 // Set to 1 to calibrate the 0-position (Hallsensor) every time when the program is started. Helps to compensate little jumps of the turntable when turned on.
  
 #define ADVANCED_REFERENCE_DETECTION        1                       // "1" fährt den Hallsensor beim 0-Punkt Kalibieren schnell an, dreht ein Stückchen zurück und fährt ihn nochmals langsam an und speichert die Referenzposition #define ADVANCED_REFERENCE_DETECTION        1                       // "1" fährt den Hallsensor beim 0-Punkt Kalibieren schnell an, dreht ein Stückchen zurück und fährt ihn nochmals langsam an und speichert die Referenzposition
Zeile 769: Zeile 363:
 #define USE_SOUND_SERIAL                    -1                       // SMART_JQ6500_SERIAL_PIN --[1K]-- TX; -1 = hardware serial is used (TX-Pin) for JQ6500 interface; DFPlayer uses softwareserialTX on Pin D12 #define USE_SOUND_SERIAL                    -1                       // SMART_JQ6500_SERIAL_PIN --[1K]-- TX; -1 = hardware serial is used (TX-Pin) for JQ6500 interface; DFPlayer uses softwareserialTX on Pin D12
  
-#define SOUNDMODULE_VOLUME                  10                       // Range: 0..30 (-1 = Don't change the volume)+#define SOUNDMODULE_VOLUME                  18                       // Range: 0..30 (-1 = Don't change the volume)
 #define DELAY_TURN_START_SOUND              7700                     /* Delay before start moving if sound is played, hängt ab vom verwendeten soundfile; bei mir machen 7,7s Sinn! #define DELAY_TURN_START_SOUND              7700                     /* Delay before start moving if sound is played, hängt ab vom verwendeten soundfile; bei mir machen 7,7s Sinn!
                                                                         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 801: Zeile 395:
 //------------------------------------------------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
-#define DCC_OFFSET                          0           // 0 = DCC addresses start at #211, using this parameter you can use other DCC ranges in case of using several turntables with one central station or you rewuire other address ranges+#define DCC_OFFSET                          0           // -4 = Roco-Offset für Roco-Zentrale,  0 = DCC addresses start at #211, using this parameter you can use other DCC ranges in case of using several turntables with one central station or you rewuire other address ranges
  
 #define DCC_WAITING_TIME                    350         // waiting time [ms] for further DCC-tickets before carrying out the DCC command #define DCC_WAITING_TIME                    350         // waiting time [ms] for further DCC-tickets before carrying out the DCC command
  
-#define DCC_MAERKLIN_7687_COMPATIBLE        1           // DCC-Befehle nur für den 1. Halbkreis der DS verwenden. In Verbindung mit der Drehrichtung kann trotzdem jeder Port so angefahren werden, dass das DS-Haus richtig steht +#define DCC_MAERKLIN_7687_COMPATIBLE        1           // 1 = DCC-Befehle nur für den 1. Halbkreis der DS verwenden. In Verbindung mit der Drehrichtung kann trotzdem jeder Port so angefahren werden, dass das DS-Haus richtig steht, notwendig bei Verwendung einer PC-Steuerung! 
 +                                                        // 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              DCC_CHKADDR((235 + DCC_OFFSET), RED)   // die "235ist an die tatsächlich verwendete letzte Adresse anzupassen!+    // sollte man nur verwenden, wenn man mit einer PC-Steuerung arbeitet 
 +    #define LAST_USED_DCC_ADDR              DCC_CHKADDR((234 + DCC_OFFSET), GRN)   // die "234" und das "GRNsind an die tatsächlich verwendete letzte Adresse unten anzupassen!
 #else #else
-#define LAST_USED_DCC_ADDR              DCC_CHKADDR((229 + PORT_CNT / 2 - 1 + DCC_OFFSET), GRN)+    // wenn man ohne PC-Steuerung arbeitet 
 +    #define LAST_USED_DCC_ADDR              DCC_CHKADDR((229 + PORT_CNT / 2 - 1 + DCC_OFFSET), GRN) // wird automatisch berechnet
 #endif #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 }+// Momentan 24 (von 48) genutzte Ports = { 1, 2, 3, 5, 8, 11, 13, 15, 17, 19, 21, 23, 25, 26, 27, 29, 32, 35, 37, 39, 41, 43, 45, 47 }
  
 #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              DCC_PORT_ADDR(1, (229 + DCC_OFFSET), RED), \ #define DCC_PORT_ADDR_LIST              DCC_PORT_ADDR(1, (229 + DCC_OFFSET), RED), \
Zeile 830: Zeile 429:
     DCC_PORT_ADDR(10, (233 + DCC_OFFSET), GRN), \     DCC_PORT_ADDR(10, (233 + DCC_OFFSET), GRN), \
     DCC_PORT_ADDR(11, (234 + DCC_OFFSET), RED), \     DCC_PORT_ADDR(11, (234 + DCC_OFFSET), RED), \
-    DCC_PORT_ADDR(12, (234 + DCC_OFFSET), GRN), \ +    DCC_PORT_ADDR(12, (234 + DCC_OFFSET), GRN) 
-    DCC_PORT_ADDR(13, (235 + DCC_OFFSET), RED) +    // die vorhergehende Zeile beschreibt die letzte Adresse und muss oben ins #define LAST_USED_DCC_ADDR eingetragen werden 
 + 
 #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              DCC_PORT_ADDR(1, (229 + DCC_OFFSET), RED), \ #define DCC_PORT_ADDR_LIST              DCC_PORT_ADDR(1, (229 + DCC_OFFSET), RED), \
Zeile 860: Zeile 460:
     DCC_PORT_ADDR(22, (239 + DCC_OFFSET), GRN), \     DCC_PORT_ADDR(22, (239 + DCC_OFFSET), GRN), \
     DCC_PORT_ADDR(23, (240 + DCC_OFFSET), RED), \     DCC_PORT_ADDR(23, (240 + DCC_OFFSET), RED), \
-    DCC_PORT_ADDR(24, (240 + DCC_OFFSET), GRN), \ +    DCC_PORT_ADDR(24, (240 + DCC_OFFSET), GRN)
-    DCC_PORT_ADDR(25, (241 + DCC_OFFSET), RED), \ +
-    DCC_PORT_ADDR(26, (241 + DCC_OFFSET), GRN)+
  
 // Bei mehr als 41 Einträgen/Zeilen in dem obigen #define spinnt der Compiler! // Bei mehr als 41 Einträgen/Zeilen in dem obigen #define spinnt der Compiler!
Zeile 894: 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 (hier 241) muss sich oben aus der #define-Formel bei LAST_USED_DCC_ADR ergeben !!!+// die letzte DCC-Adresse muss sich oben aus der #define-Formel bei LAST_USED_DCC_ADR ergeben !!!
  
  
Zeile 906: Zeile 504:
 #define BUTTON_THRESHOLDS    970, 327, 696, 872 #define BUTTON_THRESHOLDS    970, 327, 696, 872
  
-#define HOME_RUN_PORT 26         // wird bei der Tastersteuerung verwendet, bei einem entsprechenden Tastendruck fährt die DS zum angegebenen Port+#define HOME_RUN_PORT 24         // 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: /*  folgende Aktionen stehen für die Taster zur Verfügung:
Zeile 927: Zeile 525:
  
 // Hier den Tastern die Aktion zuordnen (kann man auch mehrfach machen, dann ";" dazwischen!): // Hier den Tastern die Aktion zuordnen (kann man auch mehrfach machen, dann ";" dazwischen!):
 +// #define BUTTON_n ohne weitere Zuordnung deaktiviert den Knopf bzw. löst keine Aktion aus, z.B. "#define BUTTON_1"
  
 // kurzer Tastendruck: // kurzer Tastendruck:
-#define BUTTON_1    Play_Sound(28)      // spielt Soundfile 28 ab+#define BUTTON_1    Play_Sound(28)      // spielt Soundfile 28 ab; falls Sound generell deaktiviert wurde, muss man die Taste deaktivieren, siehe oben 
 #define BUTTON_2    B_U_Turn_CW() #define BUTTON_2    B_U_Turn_CW()
 #define BUTTON_3    B_Toggle_House() #define BUTTON_3    B_Toggle_House()
anleitungen/bauanleitungen/locoturn_v10/150_locoturn_parameter.1725283515.txt.gz · Zuletzt geändert: 2024/09/02 13:25 von domapi