Hulp nodig met AccelStepper
27 berichten
• Pagina 2 van 3 • 1, 2, 3
Re: Hulp nodig met AccelStepper
Paul, ik wil graag foto's plaatsen. Maar kan niet meer dan 200kb uploaden hier. Mijn tel maakt gemmideld 1 mb per foto.
of is er een andere manier.
of is er een andere manier.
Advertisement
Re: Hulp nodig met AccelStepper
ja hoor de resolutie kleiner maken of alles in een zip zetten dat gaat ook.
en als het heel groot is dan kun je wetransfer gebruiken.
en als het heel groot is dan kun je wetransfer gebruiken.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Hulp nodig met AccelStepper
Goede avond!
Ik ben druk bezig met de robot bekabeling en de foto's worden snel geplaatst. Vandaag ben ik druk geweest met het schrijven van een code, waarmee je de robot opdrachten kunt geven via de Serial monitor. Het werkt perfect met 1 motor, open serial monitor en toets in de waarden voor:
Snelheid
Positie
Richting
Acceleratie
Na het bereiken van de gegeven positie reset de motor de positie naar 0 en zet alle uitgangen op LOW.
Daarna kan je weer een positie opgeven etc.
Maar helaas een tweede of meerdere motoren erbij zit er niet in,
Code :
#include <AccelStepper.h>
AccelStepper stepper1(AccelStepper::HALF4WIRE, 30, 32, 34, 36);
AccelStepper stepper2(AccelStepper::HALF4WIRE, 22, 24, 26, 28);
AccelStepper stepper3(AccelStepper::HALF4WIRE, 46, 48, 50, 52);
int motorMove2;
int motorPos2 = 0;
int motorSpeed2;
int motorAccel2;
int Dir2;
int motorMove;
int motorPos = 0;
int motorSpeed;
int motorAccel;
int Dir;
void setup() {
Serial.begin(9600);
Serial.println("Test 6 Case 9 Robot");
}
void command2(boolean forward2){
if (forward2){
for (int motorPos2 =0; motorPos2 <= motorMove2; motorPos2++){
stepper2.moveTo(motorMove2);
stepper2.setMaxSpeed(motorSpeed2);
stepper2.setAcceleration(motorAccel2);
stepper2.run();
}
}
else {
for (int motorPos2=0; motorPos2 <= motorMove2; motorPos2--){
stepper2.moveTo(-motorMove2);
stepper2.setMaxSpeed(motorSpeed2);
stepper2.setAcceleration(motorAccel2);
stepper2.run();
}
}
}
void command(boolean forward){
if (forward){
for (int motorPos =0; motorPos <= motorMove; motorPos++){
stepper1.moveTo(motorMove);
stepper1.setMaxSpeed(motorSpeed);
stepper1.setAcceleration(motorAccel);
stepper1.run();
}
}
else {
for (int motorPos=0; motorPos <= motorMove; motorPos--){
stepper1.moveTo(-motorMove);
stepper1.setMaxSpeed(motorSpeed);
stepper1.setAcceleration(motorAccel);
stepper1.run();
}
}
}
void info(){
// stepper1 setup
Serial.print("Motor 1 Speed input "); //hier is de setup van de 2 motoren
while (Serial.available()==0){ }
motorSpeed = Serial.parseInt();
Serial.println(motorSpeed);
Serial.print("Motor Move input ");
while (Serial.available()==0){ }
motorMove = Serial.parseInt();
Serial.println(motorMove);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward = Dir;
Dir = Serial.parseInt();
Serial.println(Dir);
Serial.print("Motor Accel input ");
while (Serial.available()==0){ }
motorAccel = Serial.parseInt();
Serial.println(motorAccel);
//stepper2 setup
Serial.print("Motor 2 Speed input ");
while (Serial.available()==0){ }
motorSpeed2 = Serial.parseInt();
Serial.println(motorSpeed2);
Serial.print("Motor 2 Move input ");
while (Serial.available()==0){ }
motorMove2 = Serial.parseInt();
Serial.println(motorMove2);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward2 = Dir2;
Dir2 = Serial.parseInt();
Serial.println(Dir2);
Serial.print("Motor Accel input ");
while (Serial.available()==0){ }
motorAccel2 = Serial.parseInt();
Serial.println(motorAccel2);
delay(300);
Serial.println("Proccessing data"); //stoer
delay(500);
Serial.println("Data succesfully transfered");
}
void loop() {
command(Dir);
command(Dir2);
if (stepper1.currentPosition()== motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
else if (stepper1.currentPosition() == -motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
if (stepper2.currentPosition()== motorMove2){
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
stepper2.run();
}
else if (stepper2.currentPosition() == -motorMove2){
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
stepper2.run();
}
stepper1.run();
stepper2.run();
stepper1.enableOutputs();
stepper2.enableOutputs();
info();
}
Dit is een soort teach functie voor de robot. Na het fijn afstellen via de serial monitor kan ik makkelijk de waardes overschrijven en dat in een array verwerken. De bedoeling is zo:
Motornummer
Snelheid
Richting
Acceleratie
Nu mis ik alleen de motornummer, een int declareren als een "1" van stepper1 gaat ook niet.
Zoals
1.moveTo(motorMove); (1 is stepper1, 2 is stepper2 etc)
Dat gaat dus niet
Ik denk dat de loop te snel gaat voor alles tegelijk maar ik ben heel benieuwd naar DE oplossing
Help me
Met vriendelijke groeten
I
Ik ben druk bezig met de robot bekabeling en de foto's worden snel geplaatst. Vandaag ben ik druk geweest met het schrijven van een code, waarmee je de robot opdrachten kunt geven via de Serial monitor. Het werkt perfect met 1 motor, open serial monitor en toets in de waarden voor:
Snelheid
Positie
Richting
Acceleratie
Na het bereiken van de gegeven positie reset de motor de positie naar 0 en zet alle uitgangen op LOW.
Daarna kan je weer een positie opgeven etc.
Maar helaas een tweede of meerdere motoren erbij zit er niet in,
Code :
#include <AccelStepper.h>
AccelStepper stepper1(AccelStepper::HALF4WIRE, 30, 32, 34, 36);
AccelStepper stepper2(AccelStepper::HALF4WIRE, 22, 24, 26, 28);
AccelStepper stepper3(AccelStepper::HALF4WIRE, 46, 48, 50, 52);
int motorMove2;
int motorPos2 = 0;
int motorSpeed2;
int motorAccel2;
int Dir2;
int motorMove;
int motorPos = 0;
int motorSpeed;
int motorAccel;
int Dir;
void setup() {
Serial.begin(9600);
Serial.println("Test 6 Case 9 Robot");
}
void command2(boolean forward2){
if (forward2){
for (int motorPos2 =0; motorPos2 <= motorMove2; motorPos2++){
stepper2.moveTo(motorMove2);
stepper2.setMaxSpeed(motorSpeed2);
stepper2.setAcceleration(motorAccel2);
stepper2.run();
}
}
else {
for (int motorPos2=0; motorPos2 <= motorMove2; motorPos2--){
stepper2.moveTo(-motorMove2);
stepper2.setMaxSpeed(motorSpeed2);
stepper2.setAcceleration(motorAccel2);
stepper2.run();
}
}
}
void command(boolean forward){
if (forward){
for (int motorPos =0; motorPos <= motorMove; motorPos++){
stepper1.moveTo(motorMove);
stepper1.setMaxSpeed(motorSpeed);
stepper1.setAcceleration(motorAccel);
stepper1.run();
}
}
else {
for (int motorPos=0; motorPos <= motorMove; motorPos--){
stepper1.moveTo(-motorMove);
stepper1.setMaxSpeed(motorSpeed);
stepper1.setAcceleration(motorAccel);
stepper1.run();
}
}
}
void info(){
// stepper1 setup
Serial.print("Motor 1 Speed input "); //hier is de setup van de 2 motoren
while (Serial.available()==0){ }
motorSpeed = Serial.parseInt();
Serial.println(motorSpeed);
Serial.print("Motor Move input ");
while (Serial.available()==0){ }
motorMove = Serial.parseInt();
Serial.println(motorMove);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward = Dir;
Dir = Serial.parseInt();
Serial.println(Dir);
Serial.print("Motor Accel input ");
while (Serial.available()==0){ }
motorAccel = Serial.parseInt();
Serial.println(motorAccel);
//stepper2 setup
Serial.print("Motor 2 Speed input ");
while (Serial.available()==0){ }
motorSpeed2 = Serial.parseInt();
Serial.println(motorSpeed2);
Serial.print("Motor 2 Move input ");
while (Serial.available()==0){ }
motorMove2 = Serial.parseInt();
Serial.println(motorMove2);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward2 = Dir2;
Dir2 = Serial.parseInt();
Serial.println(Dir2);
Serial.print("Motor Accel input ");
while (Serial.available()==0){ }
motorAccel2 = Serial.parseInt();
Serial.println(motorAccel2);
delay(300);
Serial.println("Proccessing data"); //stoer
delay(500);
Serial.println("Data succesfully transfered");
}
void loop() {
command(Dir);
command(Dir2);
if (stepper1.currentPosition()== motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
else if (stepper1.currentPosition() == -motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
if (stepper2.currentPosition()== motorMove2){
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
stepper2.run();
}
else if (stepper2.currentPosition() == -motorMove2){
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
stepper2.run();
}
stepper1.run();
stepper2.run();
stepper1.enableOutputs();
stepper2.enableOutputs();
info();
}
Dit is een soort teach functie voor de robot. Na het fijn afstellen via de serial monitor kan ik makkelijk de waardes overschrijven en dat in een array verwerken. De bedoeling is zo:
Motornummer
Snelheid
Richting
Acceleratie
Nu mis ik alleen de motornummer, een int declareren als een "1" van stepper1 gaat ook niet.
Zoals
1.moveTo(motorMove); (1 is stepper1, 2 is stepper2 etc)
Dat gaat dus niet
Ik denk dat de loop te snel gaat voor alles tegelijk maar ik ben heel benieuwd naar DE oplossing
Help me
Met vriendelijke groeten
I
Re: Hulp nodig met AccelStepper
case switch werkt wel dus case motornummer en dan bij 1 alle stappen van motor1 eronder.
etc.
begin daar maar eens mee.
etc.
begin daar maar eens mee.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Hulp nodig met AccelStepper
Ik heb het nu in een case switch gemaakt.
Alleen wil stepper2 niet van richting veranderen ongeacht welke richting ik aangeef via de serial monitor het blijf FALSE.
En tegelijk besturen lukt me ook niet, alleen om de beurt. Hoe kan ik ze tegelijk laten draaien.
Hier is mijn code.
#include <AccelStepper.h>
AccelStepper stepper1(AccelStepper::HALF4WIRE, 30, 32, 34, 36);
AccelStepper stepper2(AccelStepper::HALF4WIRE, 22, 24, 26, 28);
AccelStepper stepper3(AccelStepper::HALF4WIRE, 46, 48, 50, 52);
int motorNumber;
int motorMove2;
int motorPos2;
int motorSpeed2;
int motorAccel2;
int Dir2;
int sw = 1;
int motorMove;
int motorPos;
int motorSpeed;
int motorAccel;
int Dir;
void setup() {
Serial.begin(9600);
Serial.println("Test 1 Case 1 Robot");
stepper1.setAcceleration(500);
stepper1.setMaxSpeed(700);
stepper2.setAcceleration(500);
stepper2.setMaxSpeed(700);
info();
}
void command2(boolean forward2){
if (forward2){
for (int motorPos =0; motorPos <= motorMove; motorPos++){
stepper2.moveTo(motorMove);
stepper2.run();
}
}
else {
for (int motorPos=0; motorPos <= motorMove; motorPos--){
stepper2.moveTo(-motorMove);
stepper2.run();
}
}
}
void command(boolean forward){
if (forward){
for (int motorPos =0; motorPos <= motorMove; motorPos++){
stepper1.moveTo(motorMove);
stepper1.run();
}
}
else {
for (int motorPos=0; motorPos <= motorMove; motorPos--){
stepper1.moveTo(-motorMove);
stepper1.run();
}
}
}
void checkStepper1(){
if (stepper1.currentPosition()== motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
else if (stepper1.currentPosition()== -motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
}
void info(){
// stepper1 setup
Serial.println(" ");
Serial.print("Motor Number input ");
while (Serial.available()==0){ }
motorNumber = Serial.parseInt();
Serial.println(motorNumber);
Serial.print("Motor Move input ");
while (Serial.available()==0){ }
motorMove = Serial.parseInt();
Serial.println(motorMove);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward = Dir;
Dir = Serial.parseInt();
Serial.println(Dir);
/* stepper2
Serial.print("Motor 2 Move input ");
while (Serial.available()==0){ }
motorMove2 = Serial.parseInt();
Serial.println(motorMove2);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward2 = Dir2;
Dir2 = Serial.parseInt();
Serial.println(Dir2);
*/
Serial.println("Loading.........");
delay(30);
}
void loop() {
switch(motorNumber) {
case 1:
command(Dir);
if (stepper1.currentPosition()== motorMove){
stepper1.stop();
Serial.print(" Stepper 1 TRUE ");
Serial.println(motorMove);
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
else if (stepper1.currentPosition()== -motorMove){
stepper1.stop();
Serial.print(" Stepper 1 FALSE ");
Serial.println(motorMove);
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
break;
case 2:
command2(Dir2);
if (stepper2.currentPosition()== motorMove){
stepper2.stop();
Serial.print(" Stepper 2 TRUE ");
Serial.println(motorMove);
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
info();
}
else if (stepper2.currentPosition()== -motorMove){
stepper2.stop();
Serial.print("Stepper 2 FALSE ");
Serial.println(motorMove);
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
info();
}
break;
}
/*
if (stepper1.currentPosition()== motorMove){
stepper1.stop();
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
else if (stepper1.currentPosition()== -motorMove){
stepper1.stop();
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
*/
stepper1.enableOutputs();
stepper2.enableOutputs();
stepper2.run();
stepper1.run();
}
Alleen wil stepper2 niet van richting veranderen ongeacht welke richting ik aangeef via de serial monitor het blijf FALSE.
En tegelijk besturen lukt me ook niet, alleen om de beurt. Hoe kan ik ze tegelijk laten draaien.
Hier is mijn code.
#include <AccelStepper.h>
AccelStepper stepper1(AccelStepper::HALF4WIRE, 30, 32, 34, 36);
AccelStepper stepper2(AccelStepper::HALF4WIRE, 22, 24, 26, 28);
AccelStepper stepper3(AccelStepper::HALF4WIRE, 46, 48, 50, 52);
int motorNumber;
int motorMove2;
int motorPos2;
int motorSpeed2;
int motorAccel2;
int Dir2;
int sw = 1;
int motorMove;
int motorPos;
int motorSpeed;
int motorAccel;
int Dir;
void setup() {
Serial.begin(9600);
Serial.println("Test 1 Case 1 Robot");
stepper1.setAcceleration(500);
stepper1.setMaxSpeed(700);
stepper2.setAcceleration(500);
stepper2.setMaxSpeed(700);
info();
}
void command2(boolean forward2){
if (forward2){
for (int motorPos =0; motorPos <= motorMove; motorPos++){
stepper2.moveTo(motorMove);
stepper2.run();
}
}
else {
for (int motorPos=0; motorPos <= motorMove; motorPos--){
stepper2.moveTo(-motorMove);
stepper2.run();
}
}
}
void command(boolean forward){
if (forward){
for (int motorPos =0; motorPos <= motorMove; motorPos++){
stepper1.moveTo(motorMove);
stepper1.run();
}
}
else {
for (int motorPos=0; motorPos <= motorMove; motorPos--){
stepper1.moveTo(-motorMove);
stepper1.run();
}
}
}
void checkStepper1(){
if (stepper1.currentPosition()== motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
else if (stepper1.currentPosition()== -motorMove){
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
}
void info(){
// stepper1 setup
Serial.println(" ");
Serial.print("Motor Number input ");
while (Serial.available()==0){ }
motorNumber = Serial.parseInt();
Serial.println(motorNumber);
Serial.print("Motor Move input ");
while (Serial.available()==0){ }
motorMove = Serial.parseInt();
Serial.println(motorMove);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward = Dir;
Dir = Serial.parseInt();
Serial.println(Dir);
/* stepper2
Serial.print("Motor 2 Move input ");
while (Serial.available()==0){ }
motorMove2 = Serial.parseInt();
Serial.println(motorMove2);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward2 = Dir2;
Dir2 = Serial.parseInt();
Serial.println(Dir2);
*/
Serial.println("Loading.........");
delay(30);
}
void loop() {
switch(motorNumber) {
case 1:
command(Dir);
if (stepper1.currentPosition()== motorMove){
stepper1.stop();
Serial.print(" Stepper 1 TRUE ");
Serial.println(motorMove);
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
else if (stepper1.currentPosition()== -motorMove){
stepper1.stop();
Serial.print(" Stepper 1 FALSE ");
Serial.println(motorMove);
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
break;
case 2:
command2(Dir2);
if (stepper2.currentPosition()== motorMove){
stepper2.stop();
Serial.print(" Stepper 2 TRUE ");
Serial.println(motorMove);
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
info();
}
else if (stepper2.currentPosition()== -motorMove){
stepper2.stop();
Serial.print("Stepper 2 FALSE ");
Serial.println(motorMove);
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
info();
}
break;
}
/*
if (stepper1.currentPosition()== motorMove){
stepper1.stop();
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
else if (stepper1.currentPosition()== -motorMove){
stepper1.stop();
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
*/
stepper1.enableOutputs();
stepper2.enableOutputs();
stepper2.run();
stepper1.run();
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Hulp nodig met AccelStepper
eerst maar eens leesbaarder maken......
cpp code
cpp code
#include <AccelStepper.h>
AccelStepper stepper1(AccelStepper::HALF4WIRE, 30, 32, 34, 36);
AccelStepper stepper2(AccelStepper::HALF4WIRE, 22, 24, 26, 28);
AccelStepper stepper3(AccelStepper::HALF4WIRE, 46, 48, 50, 52);
int motorNumber;
int motorMove2;
int motorPos2;
int motorSpeed2;
int motorAccel2;
int Dir2;
int sw = 1;
int motorMove;
int motorPos;
int motorSpeed;
int motorAccel;
int Dir;
void setup() {
Serial.begin(9600);
Serial.println("Test 1 Case 1 Robot");
stepper1.setAcceleration(500);
stepper1.setMaxSpeed(700);
stepper2.setAcceleration(500);
stepper2.setMaxSpeed(700);
info();
}
void command2(boolean forward2) {
if (forward2) {
for (int motorPos = 0; motorPos <= motorMove; motorPos++) {
stepper2.moveTo(motorMove);
stepper2.run();
}
}
else {
for (int motorPos = 0; motorPos <= motorMove; motorPos--) {
stepper2.moveTo(-motorMove);
stepper2.run();
}
}
}
void command(boolean forward) {
if (forward) {
for (int motorPos = 0; motorPos <= motorMove; motorPos++) {
stepper1.moveTo(motorMove);
stepper1.run();
}
}
else {
for (int motorPos = 0; motorPos <= motorMove; motorPos--) {
stepper1.moveTo(-motorMove);
stepper1.run();
}
}
}
void checkStepper1() {
if (stepper1.currentPosition() == motorMove) {
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
} else if (stepper1.currentPosition() == -motorMove) {
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
stepper1.run();
}
}
void info() {
// stepper1 setup
Serial.println(" ");
Serial.print("Motor Number input ");
while (Serial.available() == 0) {
}
motorNumber = Serial.parseInt();
Serial.println(motorNumber);
Serial.print("Motor Move input ");
while (Serial.available() == 0) {
}
motorMove = Serial.parseInt();
Serial.println(motorMove);
Serial.print("Direction ");
while (Serial.available() == 0) {
}
boolean forward = Dir;
Dir = Serial.parseInt();
Serial.println(Dir);
/* stepper2
Serial.print("Motor 2 Move input ");
while (Serial.available()==0){ }
motorMove2 = Serial.parseInt();
Serial.println(motorMove2);
Serial.print("Direction ");
while (Serial.available()==0){ }
boolean forward2 = Dir2;
Dir2 = Serial.parseInt();
Serial.println(Dir2);
*/
Serial.println("Loading.........");
delay(30);
}
void loop() {
switch (motorNumber) {
case 1:
command(Dir);
if (stepper1.currentPosition() == motorMove) {
stepper1.stop();
Serial.print(" Stepper 1 TRUE ");
Serial.println(motorMove);
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
} else if (stepper1.currentPosition() == -motorMove) {
stepper1.stop();
Serial.print(" Stepper 1 FALSE ");
Serial.println(motorMove);
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
break;
case 2:
command2(Dir2);
if (stepper2.currentPosition() == motorMove) {
stepper2.stop();
Serial.print(" Stepper 2 TRUE ");
Serial.println(motorMove);
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
info();
} else if (stepper2.currentPosition() == -motorMove) {
stepper2.stop();
Serial.print("Stepper 2 FALSE ");
Serial.println(motorMove);
stepper2.disableOutputs();
stepper2.setCurrentPosition(0);
info();
}
break;
}
/*
if (stepper1.currentPosition()== motorMove){
stepper1.stop();
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
}
else if (stepper1.currentPosition()== -motorMove){
stepper1.stop();
stepper1.disableOutputs();
stepper1.setCurrentPosition(0);
info();
*/
stepper1.enableOutputs();
stepper2.enableOutputs();
stepper2.run();
stepper1.run();
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Hulp nodig met AccelStepper
Ik weet niet waar jij gedacht had dat je de richting zet voor motor2????
Re: Hulp nodig met AccelStepper
Ik heb het al opgelost, stepper2 richting ging via Dir2, maar moest zijn Dir. Nog steeds snap ik niet hoe ik ze allemaal tegelijk in 1 case kan proppen. 1motor per keer schiet niet op, maar het werkt wel!
Re: Hulp nodig met AccelStepper
Allereerst zorg dat in de loop die run commandos staan. dus stepper1.run en stepper2.run
en nergens anders, want dat heeft geen zin en is ook niet slim om parralel te draaien.
de case instructie gebruik je dan om motor1 en motor2 een nieuw commando te geven.
en niet motor.... en motor2.
in de loop schrijf je verder dat als de positie bereikt is de motoren uit mogen, stoppen doen ze toch wel want ze zijn tenslotte op positie.
hier kun je ook voorwaarden zetten zoals als motor1 en motor2 op positie zijn dan volgende stap of iets dergelijks al wat je wil.
dus een beetje structuur, verder ben je goed bezig hoor.
ik snap die for loop niet, en motorpos moet je terugvragen per motor en niet in een for loop werken want dat gaat niet.
je moet alleen de commandos met die case structuur verqwerken, en motor.run regelt zelf of er een motor moet lopen.
en nergens anders, want dat heeft geen zin en is ook niet slim om parralel te draaien.
de case instructie gebruik je dan om motor1 en motor2 een nieuw commando te geven.
en niet motor.... en motor2.
in de loop schrijf je verder dat als de positie bereikt is de motoren uit mogen, stoppen doen ze toch wel want ze zijn tenslotte op positie.
hier kun je ook voorwaarden zetten zoals als motor1 en motor2 op positie zijn dan volgende stap of iets dergelijks al wat je wil.
dus een beetje structuur, verder ben je goed bezig hoor.
ik snap die for loop niet, en motorpos moet je terugvragen per motor en niet in een for loop werken want dat gaat niet.
je moet alleen de commandos met die case structuur verqwerken, en motor.run regelt zelf of er een motor moet lopen.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Hulp nodig met AccelStepper
Ik heb de code inmiddels klaar. Alle 5 motoren kunnen tegelijk draaien met verschillende posities die je onbeperkt kan sturen via de serial monitor!
De uiteindelijke posities kan ik overschrijven en in een array plaatsen.
Het was een interessante ervaring om het beestje voor het eerst te zien bewegen. Misschien heb ik sommige dingen onlogisch in de code geplaatst(wat jij zei over de for loop), die ga ik morgen weghalen. Het code is een beetje traag, maar het doet z'n werk
Voor diegene die het willen uitproberen download de zip je hebt alleen nog Accelstepper.h nodig.
De uiteindelijke posities kan ik overschrijven en in een array plaatsen.
Het was een interessante ervaring om het beestje voor het eerst te zien bewegen. Misschien heb ik sommige dingen onlogisch in de code geplaatst(wat jij zei over de for loop), die ga ik morgen weghalen. Het code is een beetje traag, maar het doet z'n werk
Voor diegene die het willen uitproberen download de zip je hebt alleen nog Accelstepper.h nodig.
- Bijlagen
-
- TeachFunction_2_steppers.rar
- (1.3 KiB) 276 keer gedownload
27 berichten
• Pagina 2 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 36 gasten