
Servus Franz,
Teil 1 geschafft - jetzt geht es zum Essen - dannn ein kleines Mittagsschläfchen, dann spazieren gehen oder B A S T E L N .
Schönes Wochenende
Wolfgang
Forum zur gegenseitigen Hilfe für Hobby´s, Spass und Technik, im Raum Penzberg, Garmisch, Bad Tölz, Seeshaupt

Code: Alles auswählen
//  Weichenschaltung mit TasterPolRelais und Anzeige der Endlagen
//  e69-fan
#define MAX8BUTTONS
#include <MobaTools.h>
//Variablendeklaration
const byte weichenPin[]                   = {2,   3,    4};        // Pins für die Weichenantriebe
// ------------------------------------------------------------------------------------------------------------------------  //
const byte ANZAHL = sizeof(weichenPin);
// ------------------------------------------------------------------------------------------------------------------------  //
const byte buttonPin[ANZAHL]              = {A1,  A2,   A3};      // Pins für die Taster
// ------------------------------------------------------------------------------------------------------------------------  //
const byte relaisPin[ANZAHL]              = {5,   6,    7};       // Pins für die Relais
// ------------------------------------------------------------------------------------------------------------------------  //
const int weichenPos1[ANZAHL]             = {40,  40,   40};      // linke Position der Servos
const int weichenPos2[ANZAHL]             = {120, 120,  120};     // rechte Position der Servos
// ------------------------------------------------------------------------------------------------------------------------  //
const byte ledGeradePin[ANZAHL]           = {8,   9,    10};      // Pin für die LED Zustand gerade
const byte ledAbzweigPin[ANZAHL]          = {11,  12,   13};      // Pin für die LED Zustand Anzweig
// ------------------------------------------------------------------------------------------------------------------------  //
const int speed[ANZAHL]                   = {8,   8,    8};       // festlegen der Verfahrgeschwindigkeit der Servos
// ------------------------------------------------------------------------------------------------------------------------  //
boolean weicheToPos1[ANZAHL];               // Sollposition des Servo ( true = Pos1 )
// ------------------------------------------------------------------------------------------------------------------------
MoToButtons taster( buttonPin, ANZAHL, 20, 300 ); // Weichentaster einrichten
MoToServo servos[3];
void setup() {
  for (byte i = 0; i < ANZAHL; i++) {
    servos[i].attach(weichenPin[i], true );
    servos[i].setSpeed(speed[i]);
    pinMode(relaisPin[i], OUTPUT);
    pinMode(ledGeradePin[i], OUTPUT);
    pinMode(ledAbzweigPin[i], OUTPUT);
    weicheToPos1[i] = true;
    servos[i].write(weichenPos1[i]);                // Startstellung Servo
    digitalWrite(relaisPin[i], weicheToPos1[i] );   // Startstellung Relais
  }
}//Ende void setup
void loop() {
  taster.processButtons();
  for ( byte i = 0; i < ANZAHL; i++ ) {
    if ( taster.pressed(i) ) {
      weicheToPos1[i] = !weicheToPos1[i];           // Weichenstellung umschalten
      if ( weicheToPos1[i] ) {
        servos[i].write(weichenPos1[i]);
      } else {
        servos[i].write(weichenPos2[i]);
      }
    }
    // Umstellvorgang läuft, Relais umschalten
    if ( servos[i].moving() < 50 ) {
      digitalWrite(relaisPin[i], weicheToPos1[i] );
    }
    //--------------------------------LED Steuerung-----
    if (servos[i].moving() == 0)
    {
      digitalWrite(ledGeradePin[i], HIGH );
      digitalWrite(ledAbzweigPin[i], LOW );
    }
    if (servos[i].moving() == 120)
    {
      digitalWrite(ledGeradePin[i], LOW );
      digitalWrite(ledAbzweigPin[i], HIGH );
    }
    //--------------------------------------------------
  }   // Ende for - schleife
}     // Ende void loop

Code: Alles auswählen
//  Weichenschaltung mit TasterPolRelais und Anzeige der Endlagen
//  e69-fan
#define MAX8BUTTONS
#include <MobaTools.h>
//Variablendeklaration
const byte weichenPin[]                   = {2,   3,    4};        // Pins für die Weichenantriebe
// ------------------------------------------------------------------------------------------------------------------------  //
const byte ANZAHL = sizeof(weichenPin);
// ------------------------------------------------------------------------------------------------------------------------  //
const byte buttonPin[ANZAHL]              = {A1,  A2,   A3};      // Pins für die Taster
// ------------------------------------------------------------------------------------------------------------------------  //
const byte relaisPin[ANZAHL]              = {5,   6,    7};       // Pins für die Relais
// ------------------------------------------------------------------------------------------------------------------------  //
const int weichenPos1[ANZAHL]             = {40,  40,   40};      // linke Position der Servos
const int weichenPos2[ANZAHL]             = {120, 120,  120};     // rechte Position der Servos
// ------------------------------------------------------------------------------------------------------------------------  //
const byte ledGeradePin[ANZAHL]           = {8,   9,    10};      // Pin für die LED Zustand gerade
const byte ledAbzweigPin[ANZAHL]          = {11,  12,   13};      // Pin für die LED Zustand Anzweig
// ------------------------------------------------------------------------------------------------------------------------  //
const int speed[ANZAHL]                   = {8,   8,    8};       // festlegen der Verfahrgeschwindigkeit der Servos
// ------------------------------------------------------------------------------------------------------------------------  //
boolean weicheToPos1[ANZAHL];               // Sollposition des Servo ( true = Pos1 )
// ------------------------------------------------------------------------------------------------------------------------
MoToButtons taster( buttonPin, ANZAHL, 20, 300 ); // Weichentaster einrichten
MoToServo servos[3];
void setup() {
  for (byte i = 0; i < ANZAHL; i++) {
    servos[i].attach(weichenPin[i], true );
    servos[i].setSpeed(speed[i]);
    pinMode(relaisPin[i], OUTPUT);
    pinMode(ledGeradePin[i], OUTPUT);
    pinMode(ledAbzweigPin[i], OUTPUT);
    weicheToPos1[i] = true;
    servos[i].write(weichenPos1[i]);                // Startstellung Servo
    digitalWrite(relaisPin[i], weicheToPos1[i] );   // Startstellung Relais
  }
}//Ende void setup
void loop() {
  taster.processButtons();
  for ( byte i = 0; i < ANZAHL; i++ ) {
    if ( taster.pressed(i) ) {
      weicheToPos1[i] = !weicheToPos1[i];           // Weichenstellung umschalten
      if ( weicheToPos1[i] ) {
        servos[i].write(weichenPos1[i]);
      } else {
        servos[i].write(weichenPos2[i]);
      }
    }
    // Umstellvorgang läuft, Relais umschalten
    if ( servos[i].moving() < 50 ) {
      digitalWrite(relaisPin[i], weicheToPos1[i] );
    }
    //--------------------------------LED Steuerung-----
    if ((servos[i].moving() == 1) && (weicheToPos1[i] == HIGH))
    {
      digitalWrite(ledGeradePin[i], HIGH );
      digitalWrite(ledAbzweigPin[i], LOW );
    }
    if ((servos[i].moving() == 1) && (weicheToPos1[i] == LOW))
    {
      digitalWrite(ledGeradePin[i], LOW );
      digitalWrite(ledAbzweigPin[i], HIGH);
    }
    //--------------------------------------------------
  }   // Ende for - schleife
}     // Ende void loop
Code: Alles auswählen
//  Weichenschaltung mit TasterPolRelais und Anzeige der Endlagen
//  e69-fan
#define MAX8BUTTONS
#include <MobaTools.h>
//Variablendeklaration
const byte weichenPin[]                   = {2,   3,    4};        // Pins für die Weichenantriebe
// ------------------------------------------------------------------------------------------------------------  //
const byte ANZAHL = sizeof(weichenPin);
// ------------------------------------------------------------------------------------------------------------  //
const byte buttonPin[ANZAHL]              = {A1,  A2,   A3};      // Pins für die Taster
// ------------------------------------------------------------------------------------------------------------  //
const byte relaisPin[ANZAHL]              = {5,   6,    7};       // Pins für die Relais
// ------------------------------------------------------------------------------------------------------------  //
const int weichenPos1[ANZAHL]             = {40,  40,   40};      // linke Position der Servos
const int weichenPos2[ANZAHL]             = {120, 120,  120};     // rechte Position der Servos
// ------------------------------------------------------------------------------------------------------------  //
const byte ledGeradePin[ANZAHL]           = {8,   9,    10};      // Pin für die LED Zustand gerade
const byte ledAbzweigPin[ANZAHL]          = {11,  12,   13};      // Pin für die LED Zustand Anzweig
// ------------------------------------------------------------------------------------------------------------  //
const int speed[ANZAHL]                   = {8,   8,    8};       // festlegen der Verfahrgeschwindigkeit der Servos
// ------------------------------------------------------------------------------------------------------------  //
boolean weicheToPos1[ANZAHL];               // Sollposition des Servo ( true = Pos1 )
// ------------------------------------------------------------------------------------------------------------  //
MoToButtons taster( buttonPin, ANZAHL, 20, 300 ); // Weichentaster einrichten
MoToServo servos[3];
void setup() {
  for (byte i = 0; i < ANZAHL; i++) {
    servos[i].attach(weichenPin[i], true );
    servos[i].setSpeed(speed[i]);
    pinMode(relaisPin[i], OUTPUT);
    pinMode(ledGeradePin[i], OUTPUT);
    pinMode(ledAbzweigPin[i], OUTPUT);
    weicheToPos1[i] = true;
    servos[i].write(weichenPos1[i]);                // Startstellung Servo
    digitalWrite(relaisPin[i], weicheToPos1[i] );   // Startstellung Relais
  }
}//Ende void setup
void loop() {
  taster.processButtons();
  for ( byte i = 0; i < ANZAHL; i++ ) {
    if ( taster.pressed(i) ) {
      weicheToPos1[i] = !weicheToPos1[i];           // Weichenstellung umschalten
      if ( weicheToPos1[i] ) {
        servos[i].write(weichenPos1[i]);
      } else {
        servos[i].write(weichenPos2[i]);
      }
    }
    // Umstellvorgang läuft, Relais umschalten
    if ( servos[i].moving() < 50 ) {
      digitalWrite(relaisPin[i], weicheToPos1[i] );
    }
    //--------------------------------LED Steuerung-----
    if ((servos[i].moving() == 1) && (weicheToPos1[i] == HIGH))
    {
      digitalWrite(ledGeradePin[i], HIGH );
      digitalWrite(ledAbzweigPin[i], LOW );
    }
    if ((servos[i].moving() == 1) && (weicheToPos1[i] == LOW))
    {
      digitalWrite(ledGeradePin[i], LOW );
      digitalWrite(ledAbzweigPin[i], HIGH);
    }
    if (servos[i].moving() > 39)
    {
      digitalWrite(ledGeradePin[i], LOW );
      digitalWrite(ledAbzweigPin[i], LOW );
    }
    //--------------------------------------------------
  }   // Ende for - schleife
}     // Ende void loop
Code: Alles auswählen
//  Weichenschaltung mit TasterPolRelais und Anzeige der Endlagen
//  e69-fan
#define MAX8BUTTONS
#include <MobaTools.h>
//Variablendeklaration
const byte weichenPin[]                   = {2,   3,    4};        // Pins für die Weichenantriebe
// ------------------------------------------------------------------------------------------------------------  //
const byte ANZAHL = sizeof(weichenPin);
// ------------------------------------------------------------------------------------------------------------  //
const byte buttonPin[ANZAHL]              = {A1,  A2,   A3};      // Pins für die Taster
// ------------------------------------------------------------------------------------------------------------  //
const byte relaisPin[ANZAHL]              = {5,   6,    7};       // Pins für die Relais
// ------------------------------------------------------------------------------------------------------------  //
const int weichenPos1[ANZAHL]             = {40,  40,   40};      // linke Position der Servos
const int weichenPos2[ANZAHL]             = {120, 120,  120};     // rechte Position der Servos
// ------------------------------------------------------------------------------------------------------------  //
const byte ledGeradePin[ANZAHL]           = {8,   9,    10};      // Pin für die LED Zustand gerade
const byte ledAbzweigPin[ANZAHL]          = {11,  12,   13};      // Pin für die LED Zustand Anzweig
// ------------------------------------------------------------------------------------------------------------  //
const int speed[ANZAHL]                   = {8,   8,    8};       // festlegen der Verfahrgeschwindigkeit der Servos
// ------------------------------------------------------------------------------------------------------------  //
boolean weicheToPos1[ANZAHL];               // Sollposition des Servo ( true = Pos1 )
// ------------------------------------------------------------------------------------------------------------  //
MoToButtons taster( buttonPin, ANZAHL, 20, 300 ); // Weichentaster einrichten
MoToServo servos[3];
void setup() {
  for (byte i = 0; i < ANZAHL; i++) {
    servos[i].attach(weichenPin[i], true );
    servos[i].setSpeed(speed[i]);
    pinMode(relaisPin[i], OUTPUT);
    pinMode(ledGeradePin[i], OUTPUT);
    pinMode(ledAbzweigPin[i], OUTPUT);
    weicheToPos1[i] = true;
    servos[i].write(weichenPos1[i]);                // Startstellung Servo
    digitalWrite(relaisPin[i], weicheToPos1[i] );   // Startstellung Relais
  }
}//Ende void setup
void loop() {
  taster.processButtons();
  for ( byte i = 0; i < ANZAHL; i++ ) {
    if ( taster.pressed(i) ) {
      weicheToPos1[i] = !weicheToPos1[i];           // Weichenstellung umschalten
      if ( weicheToPos1[i] ) {
        servos[i].write(weichenPos1[i]);
      } else {
        servos[i].write(weichenPos2[i]);
      }
    }
    // Umstellvorgang läuft, Relais umschalten
    if ( servos[i].moving() < 50 ) {
      digitalWrite(relaisPin[i], weicheToPos1[i] );
    }
    //--------------------------------LED Steuerung-----
    if ((servos[i].moving() == 0) && (weicheToPos1[i] == HIGH))
    {
      digitalWrite(ledGeradePin[i], HIGH );
      digitalWrite(ledAbzweigPin[i], LOW );
    }
    if ((servos[i].moving() == 0) && (weicheToPos1[i] == LOW))
    {
      digitalWrite(ledGeradePin[i], LOW );
      digitalWrite(ledAbzweigPin[i], HIGH);
    }
    if (servos[i].moving() > weichenPos1[i]-1)
    {
      digitalWrite(ledGeradePin[i], LOW );
      digitalWrite(ledAbzweigPin[i], LOW );
    }
    //--------------------------------------------------
  }   // Ende for - schleife
}     // Ende void loop

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast