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 . . .... 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.







Zitieren

Lesezeichen