Hallo zusammen,
ich versuche die AccelStepper Library für Arduino zu verwenden,
allerdings habe ich seit Stunden ein Problem bei dem ich nicht weiter
komme.
Ich habe ein kleines Programm geschrieben um mich mit der Funktionsweise
vertraut zu machen. Das Programm soll einfach nur bewirken, dass der
Motor Punkte abfährt, die in einem Array hinterlegt sind. Allerdings
fährt der Schrittmotor lediglich dauerhaft in eine Richtung.
Hier ist mein Quelltext:
1 | #include <AccelStepper.h>
|
2 | #include <Wire.h>
|
3 | #include <Adafruit_MotorShield.h>
|
4 | #include "utility/Adafruit_PWMServoDriver.h"
|
5 | #include <Adafruit_MCP23017.h>
|
6 |
|
7 | Adafruit_MotorShield AFMS(0x60); // Default address, no jumpers
|
8 |
|
9 | Adafruit_StepperMotor *myStepper1 = AFMS.getStepper(200, 1);
|
10 | float v = 100;
|
11 |
|
12 | // wrappers for the first motor!
|
13 | void forwardstep1() {
|
14 | myStepper1->onestep(FORWARD, DOUBLE);
|
15 | }
|
16 | void backwardstep1() {
|
17 | myStepper1->onestep(BACKWARD, DOUBLE);
|
18 | }
|
19 |
|
20 | AccelStepper stepper1(forwardstep1, backwardstep1);
|
21 |
|
22 | signed long path[4]={10, -10, 10, -10};
|
23 |
|
24 | void setup()
|
25 | {
|
26 | AFMS.begin(); // Start the top shield
|
27 | stepper1.setCurrentPosition(0);
|
28 | }
|
29 |
|
30 | void loop()
|
31 | {
|
32 | int i;
|
33 | signed long x;
|
34 | for(i=0; i<4; i++){
|
35 | x = path[i];
|
36 | stepper1.setSpeed(v);
|
37 | stepper1.move(x);
|
38 | while(stepper1.distanceToGo() != 0){
|
39 | stepper1.runSpeed();
|
40 | }
|
41 | }
|
42 | }
|
Wäre super, wenn mir jemand weiterhelfen könnte!