- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Problem mit der Accelstepper.h

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Anzeige

    Praxistest und DIY Projekte
    jok3r

    Ich hab das damals von C++ noch so in Erinnerung gehabt das ich immer (int x ) schreiben muss , weil sonst kann ich mit den rückgabewerten nichts anfangen (vergleichen ect.) ?
    Das mag für Funktionen wie z.B.
    Code:
    int addiere (int a, int b)
    {
      return a+b;
    }
    gelten.
    Deine Funktion joystick() holt sich aber mit analogRead() Werte 'direkt' von der Hardware.

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    Wieso wie macht das dann einen Unterschied ? Ich hab erfreuliche Ergebnisse, alles funktioniert soweit hin sehr gut .

    Teaching Modus, Positionen Speed Delay Tool werden in einem Array[][] gespeichert .
    Automatik Modus,alle Werte werden richtig zugeordnet und werden in eine For schleife abgefahren .
    Jetzt wäre mir noch sehr wichtig das Delay ab dem Zeitpunkt beginnt zu laufen wenn alle Schrittmotoren stehen.
    Daher habe ich eine If abfrage am schluss
    int Stepper_routine()
    {

    Stepper0.moveTo(Position[Pos_Display][0]);
    Stepper1.moveTo(Position[Pos_Display][1]);
    Stepper2.moveTo(Position[Pos_Display][2]);
    Stepper3.moveTo(Position[Pos_Display][3]);

    Stepper0.setSpeed(Position[Pos_Display][7]*100);
    Stepper1.setSpeed(Position[Pos_Display][7]*100);
    Stepper2.setSpeed(Position[Pos_Display][7]*100);
    Stepper3.setSpeed(Position[Pos_Display][7]*100);

    Stepper0.runSpeed();
    Stepper1.runSpeed();
    Stepper2.runSpeed();
    Stepper3.runSpeed();

    if ( Stepper0.runSpeed = 0 | Stepper1.runSpeed = 0 | Stepper2.runSpeed = 0 | Stepper3.runSpeed = 0){
    return 1;
    }else {
    return 0;
    }

    }
    Die soll mir einen Wert liefern der im Betrieb die While schleife schließt -->
    void Automatik()
    {

    static int PosWork = 0;



    if (digitalRead(Taster1) == HIGH)
    {

    for (Pos_Display = 1; Pos_Display <= 5; Pos_Display++)
    {

    while (PosWork)
    {


    PosWork = Stepper_routine();




    lcd.setCursor(5, 3); // Display Ausgabe
    lcd.print(Position[Pos_Display][5]) ;
    lcd.setCursor(14, 3);
    lcd.print(Position[Pos_Display][4]);
    lcd.setCursor(6, 2) ;
    lcd.print(Position[Pos_Display][7]);
    lcd.setCursor(16, 2);
    lcd.print(Position[Pos_Display][6]);

    delay(Position[Pos_Display][6] * 1000);
    }


    }


    }


    }
    Leider läuft er jetzt nicht an , ich muss irgendwie davor in die schleife kommen ... nach 2 stunden bin ich nicht auf dem Fehler gekommen -.- . Gruß Dominik
    Geändert von jok3r (26.03.2014 um 17:03 Uhr)

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ich werde den Code nicht genau analysieren, aber auf den ersten Blick fällt auf:
    ... wenn alle Schrittmotoren stehen.
    Code:
    if ( Stepper0.runSpeed = 0 | Stepper1.runSpeed = 0 | Stepper2.runSpeed = 0 | Stepper3.runSpeed = 0)...
    Müsste aber:
    Code:
    if ( Stepper0.runSpeed == 0 && Stepper1.runSpeed == 0 && Stepper2.runSpeed == 0 && Stepper3.runSpeed == 0)...

    Code:
    Stepper0.setSpeed(Position[Pos_Display][7]*100);
    Stepper1.setSpeed(Position[Pos_Display][7]*100);
    Stepper2.setSpeed(Position[Pos_Display][7]*100);
    Stepper3.setSpeed(Position[Pos_Display][7]*100);
    Sicher, dass alle Stepper die gleiche Geschwindigkeit haben sollen?

    Code:
    lcd.setCursor(16, 2);
    lcd.print(Position[Pos_Display][6]);
    delay(Position[Pos_Display][6] * 1000);
    Das würde ich mir auch noch einmal überlegen.
    Geändert von Sisor (26.03.2014 um 17:27 Uhr)

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    Ja vorerst sollten sie die gleich Geschwindigkeit bekommen. Oh sry ja das wurde schon geändert es soll nicht Pos_Display sondern Delay_Display heißen.


    zu
    if ( Stepper0.runSpeed == 0 && Stepper1.runSpeed == 0 && Stepper2.runSpeed == 0 && Stepper3.runSpeed == 0)...
    Die idee ist wenn einer der Schrittmotoren noch aktiv ist , dann soll die While schleife eine 1 erhalten ein verlassen sollte erst möglich sein wenn die Motoren stehen. Gruß

    - - - Aktualisiert - - -

    Laut Accel Stepper liefert Stepper0.runSpeed() --> eine 1 wenn er in Bewegung ist . Ich hab mir dabei gedacht das ich diese ein einfach abfragen kann in dem ich die Funktion mit etwas vergleiche .Sie liefert eine Boolean
    Geändert von jok3r (26.03.2014 um 18:33 Uhr)

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Die Aussage
    wenn einer der Schrittmotoren noch aktiv ist , dann soll die While schleife eine 1 erhalten
    als C-Code:
    Code:
    if (stepper0.runSpeed || Stepper1.runSpeed || Stepper2.runSpeed || Stepper3.runSpeed) return 1;
    else return 0;
    oder umgedrehte Logik, identisches Ergebnis:
    Code:
    if (stepper0.runSpeed == 0 && Stepper1.runSpeed == 0 && Stepper2.runSpeed == 0 && Stepper3.runSpeed == 0) return 0;
    else return 1;
    Geändert von Sisor (26.03.2014 um 18:59 Uhr)

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    ja stimmt schon hast recht ... es muss auch noch eine do while schleife werden , sonst komme ich nie rein . Gruß

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Problem mit der Taster
    Von oliver123 im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 25.04.2011, 11:46
  2. [ERLEDIGT] Problem mit der Textbox
    Von TomEdl im Forum Anregungen/Kritik/Fragen zum Forum und zum Wiki RN-Wissen
    Antworten: 1
    Letzter Beitrag: 19.03.2011, 13:13
  3. Problem mit der Linienverfolgung
    Von Hohenloher im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 25.03.2010, 19:16
  4. Problem mit der Streckenberechnung
    Von Der_Anfänger im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 16.07.2007, 11:01
  5. Problem mit der Hysterese
    Von Jimmy C im Forum Elektronik
    Antworten: 19
    Letzter Beitrag: 07.07.2004, 19:36

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress