
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: Ahrefs [Bot] und 5 Gäste