- LiFePO4 Speicher Test         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: Ich brauch professionelle Hilfe bei Programmierung meines Kranes

  1. #21
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Anzeige

    Praxistest und DIY Projekte
    Hallo Bodo!
    ... Ich Stelle den fertigen Code nochmal rein. Ich habe jetzt auch die Erläuterungen von Valen verstanden und ..
    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 . . .
    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
     }  
    }
    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.

    Weiter viel Erfolg in Deinem Trockendock - und auf dem Wasser.
    Ciao sagt der JoeamBerg

  2. #22
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2015
    Ort
    Bayern
    Beiträge
    17
    Danke für den Hinweis, ich versuch es zu beachten.

  3. #23
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Schiffe Bodo Beitrag anzeigen
    ...
    while((S1)==LOW); } // Warten bis zum neuen Programmstart
    }
    }

    Soweit alles gut.
    Nein. Nicht ganz. Viel besser, aber das ende stimmt noch nicht. Die Bedingung von der while-schleife macht immer noch keinen Sinn. S1 ist 4, und LOW ist den Wert 0, also wird diese Vergleichung immer falsch.

    Wie kann ich die LED nur dann zum blinken bringen wenn der Kran sich bewegt?
    Du verbindest gleich von Anfang ab in setup() den callback Funktion an den Timer1 Interrupt. Dann blinkt sie doch auch gleich wann Arduino auf-startet? Wieso das nicht nur machen auf das moment das den Kran anfangen soll sich zu bewegen? Und es gibt auch noch ein Funktion detachInterrupt womit das blinken gestoppt werden kann wenn nötig.
    https://www.arduino.cc/en/Reference/DetachInterrupt


    Nochmals vielen Dank, besonders an Valen, für eure Hilfe.
    Gerne gemacht.

  4. #24
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2015
    Ort
    Bayern
    Beiträge
    17
    Hallo Valen ich hab den LOW reingeschrieben weil ich doch interne pullup verwende. Also muss ich jetzt warten wenn ich wieder starten will bis ich LOW hab da der S 1 sonst immer HIGH hat. Ich hab es am Kran mit den Schaltern ausprobiert. Deshalb kann ich schreiben Kran funktioniert. Muss mir nur noch was überlegen wie ich den Kranhaken überwachen kann. Nach mehreren durchlaufen verschiebt sich die Position vom Haken. Der Kran ist ja nicht sehr groß deshalb muss ich erst schauen was ich am besten einbauen kann. Kran ist circa 10 cm hoch. Das mit den Interrupt hab ich mir schon öfters durchgelesen aber irgendwie verstehe ich das nicht wirklich. Könntest du mir das mal erklären? Vielleicht begreife ich das dann. Danke nochmal besonders an dich für deine Hilfe. Schönes Wochenende.

  5. #25
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.198
    Ist doch ganz einfach:

    Wenn sich der Kran bewegt, startest du das Blinken mit
    attachInterrupt(blinken);

    Wird der Kran gestoppt, stoppst du auch das Blinken wieder mit

    detachInterrupt(blinken);
    und um sicher zu gehen, dass die LED hier auch aus geht (sie könnte in dem Moment ja an sein), schaltest du sie noch zusätzlich aus:
    digitalWrite(LedPin, LOW);// das schaltet die LED ab-wenn sie zufällig schon aus war, passiert hier einfach nix

    und fertig.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #26
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2015
    Ort
    Bayern
    Beiträge
    17
    Danke für den Hinweis. Ich werde mal versuchen das umzusetzen.

  7. #27
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Schiffe Bodo Beitrag anzeigen
    Hallo Valen ich hab den LOW reingeschrieben weil ich doch interne pullup verwende. Also muss ich jetzt warten wenn ich wieder starten will bis ich LOW hab da der S 1 sonst immer HIGH hat....
    Meine Verzeihung. Ich hab mich geirrt.

  8. #28
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2015
    Ort
    Bayern
    Beiträge
    17
    Valen bist halt ein guter Lehrer. Mit dem blinken nur wenn der Kran läuft komme ich immer noch nicht weiter. Ich hab in der Zwischenzeit einen Schalter für das Seil am Kran verbaut und den Code angepasst. Stelle ich morgen dann mal rein. Ich hab das ganze ja jetzt auf einem Uno laufen kann ich den Code auch auf einem Nano oder Mini betreiben oder muss da dann noch etwas angepasst werden.
    Schönen Sonntag noch.

  9. #29
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    Normalerweise muss man den Controller Typ beim Compiler umstellen, damit die ganzen Register passen. Die verwendeten Pins müssen natürlich auch passen.
    Wie das geht weiß ich jedoch nicht.

    MfG Hannes

  10. #30
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.198
    In der IDE selber geht das. Menüpunkt Tools->Board.
    Beachte aber dass der Mini keinen USB-Anschluss hat.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

Seite 3 von 3 ErsteErste 123

Ä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
  •  

12V Akku bauen