Hallo Bodo!
Code, auch Teile davon, werden wesentlich leserlicher wenn Du den Code in ein Codefenster schreibst. Im Codefenster sind nämlich Einrückungen und Tabs deutlich(er) zu erkennen. Ich habe mal zur Demonstration nur Deinen Text von oben in ein Codefenster kopiert . . .Zitat:
... Ich Stelle den fertigen Code nochmal rein. Ich habe jetzt auch die Erläuterungen von Valen verstanden und ..
Dazu wird beim Antworten (evtl. auf [Erweitert] drücken - rechts unten der mittlere Button) auf den Hashbutton (das # rechts oben) gedrückt. Es werden zwei Tags aufgemacht [.CODE.][./CODE.] , zwischen diesen kannst Du den Code einfügen. Alternativ die Einfügung markieren (linke Maustaste und mit Cursor-drüberfahren den betreffenden Text überstreichen) und DANACH sofort auf den #-Button.Code://Kran der Calypso ansteuern
//1 Stepper und 1 DC Motor
#include <Stepper.h>
#include "TimerOne.h"
#define LED 7 //WarnLED Kran in Bewegung
int S1 = 4; //Starttaster von RC-Fernbedienung
int S2 = 6; //Endschalter Kran in Ruheposition
boolean Kranstart = false; //Kran Zustand- Variable
int SPMU1 = 32;
int RELAISAUF = 2; //Seil aufrollen
int RELAISAB = 3; //Seil abrollen
Stepper myStepper1(SPMU1,10,11,12,13); //Kran drehen
void setup() {
{
pinMode(LED, OUTPUT);
Timer1.initialize(200000); // initialize timer1, and set a 1/2 second period
Timer1.attachInterrupt(callback); // attaches callback() as a timer overflow interrupt
Timer1.pwm(9, 512); // setup pwm on pin 9, 50% duty cycle
}
pinMode(S1,INPUT_PULLUP); // RC-Fernbedienung Eingang mit Pull-up
pinMode(S2,INPUT_PULLUP); // Taster Eingang mit Pull-up, in Ruheposition
pinMode(RELAISAUF,OUTPUT); // Relais für Seil AUF
pinMode(RELAISAB,OUTPUT); // Relais für Seil AB
myStepper1.setSpeed(400); // Steppermotor Kran drehen
Serial.begin(9600);
}
void callback(){
{
// Die LED blinkt unabhängig vom Programmcode in loop()
digitalWrite(LED, digitalRead(LED) ^ 1); // EXOR invertiert
}
}
void loop() {
Kranstart = (digitalRead(S1)==HIGH) && (digitalRead(S2)==HIGH); //Kran fertig zum Start, wenn S1 HIGH ist UND S2 HIGH ist.
Serial.print("Channell 1:");
Serial.println (digitalRead(S1));
Serial.print ("Channell 2:");
Serial.println(digitalRead(S2));
Serial.print ("Channell 3:");
Serial.println(Kranstart);
delay(500);
if (Kranstart == true){
digitalWrite(RELAISAUF,HIGH); // Seil auf Start
delay(2600);
digitalWrite (RELAISAUF, LOW); // Seil auf Stop
delay(2000);
myStepper1.step(-3600); // Kran ausdrehen (Winkel einstellen)
delay(2000);
digitalWrite (RELAISAB, HIGH); // Seil ab Start
delay(13000);
digitalWrite (RELAISAB, LOW); // Seil ab Stop
delay(20000); // Tauchtasse im Wasser (20sec)
digitalWrite (RELAISAUF, HIGH); // Seil auf Start
delay(13000);
digitalWrite (RELAISAUF, LOW); // Seil auf Stop
delay(2000);
myStepper1.step(3600); // Kran eindrehen
delay(3000);
digitalWrite (RELAISAB, HIGH); // Seil ab Start
delay(2600);
digitalWrite (RELAISAB, LOW); // Seil ab Stop
delay(5000);
}
else if (digitalRead(S2)==LOW){ // Kran nicht fertig zum Start
digitalWrite(RELAISAUF,HIGH); // Seil auf Start
delay(2600);
digitalWrite(RELAISAUF,LOW); // Seil auf Stop
delay(1000);
myStepper1.step(50); // Kran drehen bis S2 HIGH
delay(1000);
digitalWrite(RELAISAB,HIGH); // Seil ab Start
delay(2600);
digitalWrite(RELAISAB,LOW); // Seil ab Stop
delay(1000);
//digitalRead(S2==HIGH);
if(digitalRead(S2)==HIGH && digitalRead(S1)==LOW)
{
while((S1)==LOW); } // Warten bis zum neuen Programmstart
}
}
Weiter viel Erfolg in Deinem Trockendock - und auf dem Wasser.