Go Down

Topic: Increase Stepper Motor Speed (Read 9482 times) previous topic - next topic

zeroproskills

yeah i looked at that im not clever enough to swap out 8,9,10,11 pins with steppin and directionpin with out it saying stepper not ....whatever

Grumpy_Mike

So post the code as you have changed it, along with the error message and some one will tell you where you have gone wrong.
When posting code, select it and then hit the # icon in the reply box before posting.


zeroproskills

Code: [Select]
#include <Stepper.h>

// change this to the number of steps on your motor
#define STEPS 200
#define directionPin 22
#define stepPin 24
// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to


// the previous reading from the analog input
int previous = 0;

void setup()
{
  // set the speed of the motor to 30 RPMs
  stepper.setSpeed(30);
}

void loop()
{
  // get the sensor value
  int val = analogRead(0);

  // move a number of steps equal to the change in the
  // sensor reading
  stepper.step(val - previous);

  // remember the previous value of the sensor
  previous = val;
}

there it is I told you I am simple the error code it gives me is stepper was not declared in this scope motorknob.cpp: in function void loop
etc. it gets very angry at me

Grumpy_Mike

You need this line:-
Code: [Select]
Stepper stepper(STEPS, 8, 9, 10, 11);
In order to tell the software what pins to use. Change the numbers to match the pins your hardware is using.

Without this line the software doesn't know what the word 'stepper' means and so it tells you it doesn't know with the error message "not declared in scope" which means "WTF no on told be about this word stepper, I don't know what to do with it.

zeroproskills

ok now we're getting somewhere i have a pololu a4988 with the direction pin and step pin when i assigned those 2 pins numbers and gave it a go the motor wont move. i have everything set up right because it works with the code that goes forward then backward

Grumpy_Mike

No it won't. This is because that code uses the stepping motor library and this is designed to produce the on / off pattern for powering the coils.
The code is totally unsuitable for the hardware you have.
Try this code, I have just written it for you so I haven't tested it but it compiles:-
Code: [Select]
// change this to the number of steps on your motor
#define dirPin 10
#define stepPin 11

// the previous reading from the analog input
int previous = 0;
int val =0;
int dir = 0; // direction of movement
int steps = 0; // number of steps to take

void setup()
{
  pinMode(stepPin, OUTPUT);
digitalWrite(stepPin, LOW);
pinMode(dirPin, OUTPUT);
}

void loop()
{
  // get the sensor value
   val = analogRead(0);

  // move a number of steps equal to the change in the
  // sensor reading
   steps = (val - previous);
  if(steps > 0){
    dir = 0;
  }
  else {
    dir = 1;
    steps = -steps;
  }
  digitalWrite(dirPin, dir); // set up the direction
  for(int i = 0; i< steps; i++){
    digitalWrite(stepPin, HIGH); // pulse the step pin
    digitalWrite(stepPin, LOW);
  }
  // remember the previous value of the sensor
  previous = val;
}


Be sure to change the first two lines to match what you have.

Texy


You need this line:-
Code: [Select]
Stepper stepper(STEPS, 8, 9, 10, 11);
In order to tell the software what pins to use. Change the numbers to match the pins your hardware is using.

Without this line the software doesn't know what the word 'stepper' means and so it tells you it doesn't know with the error message "not declared in scope" which means "WTF no on told be about this word stepper, I don't know what to do with it.



LOL, spoken like a true Brit.

zeroproskills

first thank you grumpy mike. good karma for you :) when i try the code and move the pot the motor does nothing. sorry it took so long to get back i have an 11 month old and work. my projects always get put on the back burner

Grumpy_Mike

Try adding a
Code: [Select]
delay(100);
after the
Code: [Select]
digitalWrite(stepPin, LOW);

GoForSmoke

Hehe, hehe! He said

...

delay

hehe, hehe, hehehehehe.

j/k!
Nick Gammon on multitasking Arduinos:
1) http://gammon.com.au/blink
2) http://gammon.com.au/serial
3) http://gammon.com.au/interrupts

Grumpy_Mike

Well in a post where I said WTF I thought WTF I will say delay.

GoForSmoke

Just the thought of going through how not to use delay has me agreeing, show him something quicker than it would take to explain why not.

Nick Gammon on multitasking Arduinos:
1) http://gammon.com.au/blink
2) http://gammon.com.au/serial
3) http://gammon.com.au/interrupts

zeroproskills

do i need to turn on the a0 pin for the pot to work thanks again for being patient and helpful

Grumpy_Mike

Quote
do i need to turn on the a0 pin for the pot to work

No.

Go Up