Go Down

Topic: accelstepper stop steppermotor (Read 153 times) previous topic - next topic

jerommeke

Hoi,

hulp gevraagd.

Hoe stop ik de stepper als de led aan gaat? 
zo werkt het niet, gezocht maar kom er niet uit.
Is een eenmalige routine die de stepper moet laten stoppen op een vaste plaats

Code: [Select]

#include <AccelStepper.h>
AccelStepper stepper (1, 4, 5);

#define Led 8

void homing() {
  stepper.setMaxSpeed(500);
  stepper.setSpeed(100);
  while (digitalRead(Led == 0)) {
    stepper.runSpeed();
  }
  stepper.stop();
}

void setup() {
  pinMode(Led, INPUT);
  homing();
}

void loop() {
}

MAS3

Hoi.

Door hier te kijken, denk ik het volgende:

Wanneer je stepper.runspeed() doet, laat je de stepper bewegen.
Wanneer je geen stepper.runspeed meer doet, zou de motor moeten stoppen.
Maar stepper.stop zou ook de motor onmiddellijk moeten stoppen.

Daarom vraag ik me af of je sketch überhaupt wel een verandering ziet op de ingang genaamd Led.
Want zolang aan de voorwaarde word voldaan, zal de motor blijven bewegen.

Daarom zou ik eens gaan meekijken hoe dat gaat met die digitalRead, bijvoorbeeld door de seriële poort aan te zetten en het resultaat van je Read daar heen te zetten.
Ziet die altijd een nul, of komt er wel een 1 binnen daar ?
Kun je ook die LED handmatig een 1 laten worden, voor het geval dat ding maar enorm kort brandt ?


Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

jerommeke

#2
Nov 21, 2020, 12:23 pm Last Edit: Nov 22, 2020, 12:28 am by jerommeke
Voor de duidelijkheid Led staat voor een lichtsluisje.

De status verandert 0 of 1. Ook handmatig met een draadje getest.
Toch wil de stepper niet stoppen, ook niet niet stepper.stop();
Had dat al getest met uitlezen van de serial port

Code: [Select]
#include <AccelStepper.h>
AccelStepper stepper (1, 4, 5);

#define Led 10

void homing() {
  Serial.begin(9600);
  stepper.setMaxSpeed(500);
  stepper.setSpeed(100);
  while (digitalRead(Led == 1)) {
    stepper.moveTo(1000);
    val = digitalRead(Led);
    Serial.println(val);
  }
  stepper.stop();
}

void setup() {
  pinMode(Led, INPUT);
  homing();
  stepper.stop();
}

void loop() {
}



shooter

nee heel logisch toch wel hoor, je zet een paar commandos neer in de setup zoals homing en stepper stop, maar het programma doet dat wel maar slechts 1 keer, je moet in de loop dus een test doen of je er al bent en stepper.run hoort daar ook in, om te kijken of er gestapt moet worden.
als je er bent doe je stepper.stop maar je doel blijft er wel gewoonstaan dus als je dan weer run gaat doen dan gaat het verder.
accelstepper is best groot met veel commandos. dus rtfm ofwel lees
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

jerommeke

Dank je voor de tip. Ik had wel de instructies van de accelstepper library gelezen maar kennelijk niet goed genoeg.
Deze: https://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html

Werkt nu zoals ik wil.

Code: [Select]
#include <AccelStepper.h>
AccelStepper stepper (1, 4, 5);

#define Led 10
int val = 0;

void homing() {
  stepper.setMaxSpeed(500);
  stepper.setSpeed(200);
  while (digitalRead(Led) == 1) {
    stepper.runSpeed();
  }
}

void setup() {
  pinMode(Led, INPUT);
  homing();
}

void loop() {
}




Go Up