- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 566

Thema: outdoor I

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.667
    Ich versuche mal ein wenig Licht in die Sache zu bringen. Da sind mir noch mehr Dinge aufgefallen, die ich nicht so recht in dem Code von Inka verstehe. Wie das Verwenden von runSpeed(). Das soll immer wieder aufgerufen werden (?), damit der Motor seine Schritte tut, allerdings ruft Inka danach immer wieder die move()-Methode auf? Die Verwendung von move(), setSpeed() usw. verstehe ich noch nicht so recht.

    Aber zunächst mal was anderes:

    die Klassenreferenz: http://www.airspayce.com/mikem/ardui...elStepper.html


    zu: stepper_VL, stepper_HL, stepper_VR, stepper_HR, stepper_MAX
    habe ich keine Werte gefunden, welche verbergen sich dahinter?






    Übersetzung:


    Sie können mehrere gleichzeitige Stepper verwenden, die sich alle mit unterschiedlichen Geschwindigkeiten und Beschleunigungen bewegen,
    vorausgesetzt, Sie rufen ihre run () - Funktionen in ausreichend regelmäßigen Abständen auf.
    Die aktuelle Position ist auf 0 und die Zielposition auf 0 eingestellt. Die Standardeinstellung für MaxSpeed und Acceleration ist 1.0.
    Die Motorpins werden während des Konstruktors durch einen Aufruf von enableOutputs () in den OUTPUT-Modus initialisiert.




    setEnablePin()
    --------------
    Legt die Aktivierungs-PIN-Nummer für Schritttreiber fest. 0xFF zeigt unbenutzt an (Standard). Andernfalls, wenn ein Pin gesetzt ist,
    wird der Pin beim Aufruf von enableOutputs () eingeschaltet und beim Aufruf von disableOutputs () ausgeschaltet.


    Der Ordnung halber würde ich den Enable-Pin über diese Methode, für alle 4988, festlegen. Auch wenn es, zumindest scheinbar, an
    der LIB vorbei funktioniert.




    stop()
    ------
    Der Stepper soll unter Verwendung der aktuellen Geschwindigkeits- und
    Beschleunigungsparameter so schnell wie möglich anhalten.




    disableOutputs()
    ----------------
    Deaktivieren Sie die Motor-Pin-Ausgänge, indem Sie alle auf LOW stellen. Abhängig vom Design Ihrer Elektronik kann dies
    die Stromversorgung der Motorspulen unterbrechen, um Strom zu sparen. Dies ist nützlich, um Arduino-Energiesparmodi
    zu unterstützen: Deaktivieren Sie die Ausgänge für den Ruhezustand und aktivieren Sie sie dann erneut mit enableOutputs(),
    bevor Sie erneut einen Schritt ausführen. Wenn der Aktivierungs-Pin definiert ist, wird er in den OUTPUT-Modus
    versetzt und der Pin auf deaktiviert gesetzt.


    isRunning()
    -----------
    Überprüft, ob der Motor gerade läuft.



    Hier habe ich Zweifel, wegen dem UND-Operator.
    Code:
    /***********************************************************/
    
    
    boolean fahrt_fertig()
    {
    
    
      return        stepper[stepper_VL].isRunning() && stepper[stepper_HL].isRunning() && stepper[stepper_VR].isRunning()
                    && stepper[stepper_HR].isRunning();
    
    
    }
    "1" und "0" ergibt normalerweise "0".
    fahrt_fertig() gäbe FALSE, wenn nur 1 Motor nicht mehr läuft.
    Wenn alle Ergebnisse von isRunning() zusammengeführt werden
    sollen, würde ich das ändern in folgenden Code, mit dem ODER-Operator.
    Code:
    /***********************************************************/
    
    
    boolean fahrt_fertig()
    {
    
    
      return        stepper[stepper_VL].isRunning() || stepper[stepper_HL].isRunning() || stepper[stepper_VR].isRunning()
                    || stepper[stepper_HR].isRunning();
    
    
    }
    Dann gäbe fahrt_fertig() ein FALSE, wenn alle Motoren nicht mehr laufen.





    Folgender Code, um die Stepper anzuhalten.
    Code:
    /***********************************************************/
    void alle_stepper_stop(void)
    {
      for (idx = stepper_VL; idx < stepper_MAX; idx++)
      {
        stepper[idx].stop();
        stepper[idx].disableOutputs();
      }
    
    
    /*
      digitalWrite(enbl_VL, HIGH);
      digitalWrite(enbl_HL, HIGH);
      digitalWrite(enbl_VR, HIGH);
      digitalWrite(enbl_HR, HIGH);
      reboot();
    */
      
    }

    stop() soll den Motor - so schnell wie möglich - anhalten.
    disableOutputs() sollte den a4988 Motortreiber abschalten,
    so dass der Motor sofort anhalten sollte.
    Normalerweise erst stoppen, dann abschalten.


    Später dann wieder anschalten enableOutputs() und den Motor bewegen.



    MfG

    - - - Aktualisiert - - -

    Auch mal bitte prüfen, ob der Code der Fernbedienung ohne Verzögerung im Programm ankommt, ob von dort irgendwo die Verzögerung (vorwärts auf rückwärts) herrührt.

    - - - Aktualisiert - - -


    Beispiel:
    stepper[index].setEnablePin(Pinnummer);
    siehe auch: setPinsInverted()
    stepper[index].setPinsInverted(false,false,true); //weil der Enable ein invertierender Eingang ist
    Geändert von Moppi (10.11.2019 um 08:31 Uhr)

Ähnliche Themen

  1. Abstandsmessung Outdoor bis 3m
    Von robo218 im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 14.12.2017, 06:56
  2. outdoor spy robot
    Von jancrombach im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 14.08.2010, 13:09
  3. Outdoor Roboter
    Von OsramLED im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 07.08.2006, 09:34
  4. Outdoor-Robo
    Von RobotrixerP im Forum Mechanik
    Antworten: 3
    Letzter Beitrag: 16.04.2006, 18:38
  5. Outdoor - Navigation
    Von Quaio im Forum Sensoren / Sensorik
    Antworten: 37
    Letzter Beitrag: 21.04.2005, 12:31

Berechtigungen

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

12V Akku bauen