Hallo Leute ich brauch bitte euren Input...
Ich versuche mir eine kleine Maschine zu bauen die mit 2 Stepper betrieben wird aber ich habe noch etwas problem mit dem Code und dem Ansprechen der STepper...
meine Vorhaben:
Wenn man Button 1 Drückt fährt StepperX bis er die maximale Distanz (Enstop) erreicht, dann startet StepperY fährt eine Distanz Y, danach startet StepperX fährt wieder Retour bis Home-Endstop X, erreicht Stepper X den Home-Endstop startet wieder StepperY und fährt wieder Distanz Y.... das ganze wird so lange gemacht bis 60 Sekunden abgelaufen sind. wichtig, die Geschwindigkeit von Stepper X muß 50mm/Sek betragen. Ist die Zeit abgelaufen, dann sollen beide Stepper auf die Homeposition fahren.
Wenn man Button 2 Drückt fährt StepperX 500mm dann Stepper Y die Distanz Y, dann fährt Stepper X wieder auf 0, dann weider STepper Y um die Distanz Y... das wieder für 60 SEk udn danach wieder auf die Homepositionen...
Soviel zur Theorie...
Ich versuche das ganze jetzt schon seit ca. 2 Wochen (der Stolz das alleine ohne Hilfe zu erreichen ist zu groß gewesen) aber jetzt bekomme ich langsam gar nix mehr hin...
hier ist ein Auszug meines Codes der einigermaßen für Button 1 funktioniert.. ausser das zurücksetzen...
irgendwie passt das aber alles nicht, da ich noch im einlesen ins Arduionoprogrammieren bin hoffe ich jetzt ein wenig auf eure hilfe... ja ich weiß er ist ziemlich konfus, ich versuche immer neues und damit ich das alte nicht verliere lass ich das auskommentiert stehen... aber hier meine ansätze...
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <elapsedMillis.h>
#define TIME 5000
#define DISTANCEX 3200
#define DISTANCEY 1500
AccelStepper stepperX(AccelStepper::DRIVER, 9, 8);
AccelStepper stepperY(AccelStepper::DRIVER, 7, 6);
unsigned long startTime;
unsigned long loopTime;
int StepCounter = 0;
int Stepping = false;
int Direction = 1;
int posX = 3600;
int posY = 1500;
void setup() {
Serial.begin(115200);
stepperX.setMaxSpeed(2000);
stepperX.setAcceleration(500);
stepperX.setSpeed(2000);
stepperY.setMaxSpeed(2000);
stepperY.setAcceleration(500);
stepperY.setSpeed(1000);
pinMode(2,INPUT);
}
void loop() {
if (digitalRead(2) == LOW && Stepping == false)
{
Serial.print("Input : ");
Serial.println(digitalRead(2));
Stepping = true;
startTime = millis();
}
if (Stepping == true)
{
Serial.print("Arbeit 1 : ");
loopTime = millis();
Serial.println(loopTime);
if (loopTime - startTime <= TIME)
//if (loopTime <= TIME)
{
Serial.println("Arbeit2");
Serial.println(startTime);
Serial.println(loopTime);
stepperX.runSpeed();
stepperY.runSpeed();
StepCounter = StepCounter + 1;
}
else
{
stepperX.stop();
stepperY.stop();
Stepping = false;
loopTime = 0;
startTime = 0;
// break;
}
//if (loopTime >= TIME)
if ((loopTime - startTime >= TIME))
{
Serial.println(" RETOUR ");
//Stepping = false;
//loopTime = 0;
//startTime = 0;
}
/*
stepperX.moveTo(0);
stepperX.runSpeed();
stepperY.moveTo(0);
stepperY.runSpeed();
Serial.print("PositionX");
Serial.println(stepperX.currentPosition());
Serial.print("PisitionY");
Serial.println(stepperY.currentPosition());
Serial.print("StepCounter:");
Serial.println(StepCounter);
Serial.print("Stepping:");
Serial.println(Stepping);
//Stepping = false;
*/
}
/*
if (Stepping == true && loopTime >= TIME)
{
stepperX.moveTo(0);
stepperX.runSpeed();
stepperY.moveTo(0);
stepperY.runSpeed();
Serial.print("PositionX");
Serial.println(stepperX.currentPosition());
Serial.print("PisitionY");
Serial.println(stepperY.currentPosition());
Serial.print("StepCounter:");
Serial.println(StepCounter);
//Stepping = false;
Serial.print("Zeit abgelaufen");
Serial.print("Stepping:");
Serial.println(Stepping);
}
/*
if (Stepping == true && loopTime <= TIME)
{
delay(5);
stepperX.moveTo(-stepperX.currentPosition());
stepperY.moveTo(-stepperY.currentPosition());
stepperX.runSpeed();
stepperY.runSpeed();
//loopTime = 0;
Serial.print("retour");
Serial.print("Stepping:");
Serial.println(Stepping);
//Stepping = false;
}
if ((Stepping == true) && (loopTime <= TIME) && (stepperX.currentPosition() == 0) && (stepperY.currentPosition() == 0))
{
Stepping = false;
Serial.print("AUS");
Serial.print("STepping:");
Serial.println(Stepping);
}
/*
if (Stepping == false)
{
startTime = 0;
loopTime = 1;
StepCounter = 0;
}
*/
}