- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 30

Thema: Ich brauch professionelle Hilfe bei Programmierung meines Kranes

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2015
    Ort
    Bayern
    Beiträge
    17
    Vielen Dank an Valen, ich habe jetzt die von dir beschriebenen Codestellen verbessert und siehe da der Kran läuft. Ich Stelle den fertigen Code nochmal rein. Ich habe jetzt auch die Erläuterungen von Valen verstanden und hoffe ich kann es mir merken.

    //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
    }
    }

    Soweit alles gut.
    Wie kann ich die LED nur dann zum blinken bringen wenn der Kran sich bewegt?
    Bringt es etwas die Delays mit Interrupts zu steuern? Im Moment kann ich die Zeiten sehr gut einzeln einstellen. Ich denke dem Programm ist es Wurst wo es seine Zeiten herbekommt.
    Ich muss jetzt noch beobachten wie sich die Position vom Seil (Haken) verhält, nach mehreren Durchläufen. Falls sich die Position des Hakens sehr verschiebt muss ich mir da auch noch eine Abfrage der Grundstellung einfallen lassen. Vielleicht überwache ich den Haken mit einem Microschalter wenn er in oberster Position ist.

    Ich habe noch die Taster von high auf low umgeschrieben und den Kran angeschlossen. Läuft!!!!!!!!!!!!!!!

    Nochmals vielen Dank, besonders an Valen, für eure Hilfe.
    Geändert von Schiffe Bodo (24.07.2015 um 09:27 Uhr)

Ähnliche Themen

  1. Hilfe beim umsetzen der Elektronik meines Robi´s
    Von Benny1989 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 15
    Letzter Beitrag: 26.05.2012, 12:45
  2. Programmierung meines Hexapods
    Von lucaosswald im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 11.01.2012, 16:01
  3. Brauch dringend hilfe!!!!!!!!!!!
    Von julianf123 im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 2
    Letzter Beitrag: 05.07.2009, 16:59
  4. brauch Hilfe zum ADC
    Von molleonair im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 13.03.2006, 14:17
  5. brauch hilfe für projekt
    Von chioro im Forum PIC Controller
    Antworten: 4
    Letzter Beitrag: 20.02.2006, 11:17

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress