Function-definition is not allowed here before '{' token

Hi all, i am trying to move 2 stepper motors using an Arduino Uno, a CNC shield and two stepstick.
The result i wish to obtain is that sequence:

X motor does 1600 microsteps (clockwise) - then -
Y motor does 88 microsteps (counterclockwise)

and so on for 21 times for the x motor and 20 times for the y motor..

then they might do the same sequence but the Y might move clockwise.

There will be 12 sequences total.

I wrote this code searching on google about something similar, but i really don't know if it does what i want and anyway there is an error: "Function-definition is not allowed here before '{' token"

Here is the code, in the void loop i delated a part of the sequence that is exactly the same repeated 12 times.

#define EN        8

//Direction pin
#define X_DIR     5
#define Y_DIR     6

//Step pin
#define X_STP     2
#define Y_STP     3

//Number of steps for each movement

int Xstps=1600;       //X movement
int Ystps=88;          //Y movement
int delayTime=200;  // microstep delay - speed

void step(boolean dir, byte dirPin, byte stepperPin, int steps)
{

  digitalWrite(dirPin, dir);

  delay(100);

  for (int i = 0; i < steps; i++) {

    digitalWrite(stepperPin, HIGH);

    delayMicroseconds(delayTime); 

    digitalWrite(stepperPin, LOW);

    delayMicroseconds(delayTime); 

  }

void setup() {
pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
pinMode(Y_DIR, OUTPUT); pinMode(Y_DIR, OUTPUT);

pinMode(EN, OUTPUT);

digitalWrite(EN, LOW);

}

void loop() {

//Layer 1/12 
step(false, X_DIR, X_STP, Xstps);  // X clockwise
step(true, Y_DIR, Y_STP, Ystps);   // Y counterclockwise
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);   //20 times
step(false, X_DIR, X_STP, Xstps);  //21 times 


//Layer 2/12
step(false, X_DIR, X_STP, Xstps);   // X clockwise
step(false, Y_DIR, Y_STP, Ystps);   // Y clockwise
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);   // 20 times
step(false, X_DIR, X_STP, Xstps);  //21 times


//Layer 3/12
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  


//Layer 4/12
step(false, X_DIR, X_STP, Xstps);   
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  


}

I hope someone will help me fixing it!
Thank You!

Where is the brace which terminates the step() function?

Pete

Damn, you beat me to it.

#define EN        8

//Direction pin
#define X_DIR     5
#define Y_DIR     6

//Step pin
#define X_STP     2
#define Y_STP     3

//Number of steps for each movement

int Xstps=1600;       //X movement
int Ystps=88;          //Y movement
int delayTime=200;  // microstep delay - speed

void step(boolean dir, byte dirPin, byte stepperPin, int steps)
{

  digitalWrite(dirPin, dir);

  delay(100);

  for (int i = 0; i < steps; i++) {

    digitalWrite(stepperPin, HIGH);

    delayMicroseconds(delayTime); 

    digitalWrite(stepperPin, LOW);

    delayMicroseconds(delayTime); 

  }
}

void setup() {
pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
pinMode(Y_DIR, OUTPUT); pinMode(Y_DIR, OUTPUT);

pinMode(EN, OUTPUT);

digitalWrite(EN, LOW);

}

void loop() {

//Layer 1/12 
step(false, X_DIR, X_STP, Xstps);  // X clockwise
step(true, Y_DIR, Y_STP, Ystps);   // Y counterclockwise
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);   //20 times
step(false, X_DIR, X_STP, Xstps);  //21 times 


//Layer 2/12
step(false, X_DIR, X_STP, Xstps);   // X clockwise
step(false, Y_DIR, Y_STP, Ystps);   // Y clockwise
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);   // 20 times
step(false, X_DIR, X_STP, Xstps);  //21 times


//Layer 3/12
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(true, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(true, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  


//Layer 4/12
step(false, X_DIR, X_STP, Xstps);   
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
step(false, Y_DIR, Y_STP, Ystps);   
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);
step(false, Y_DIR, Y_STP, Ystps);
step(false, X_DIR, X_STP, Xstps);  
}

Sometimes using Ctrl-T while the cursor is in the IDE's Source Code window, it will place the cursor at the spot where's there's a missing brace. In any event, using Ctrl-T is a good idea before you post your code.

el_supremo:
Where is the brace which terminates the step() function?

Pete

I don't know, can you please make me an example?

Sere:
I don't know, can you please make me an example?

You mean like the corrected code I posted above that compiles without errors?
Yeesh, take a horse to water....

econjack:
Sometimes using Ctrl-T while the cursor is in the IDE's Source Code window, it will place the cursor at the spot where's there's a missing brace. In any event, using Ctrl-T is a good idea before you post your code.

I have tryed but nothing happened

Look at this section of the code:

    delayMicroseconds(delayTime);

  }

void setup() {
pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
pinMode(Y_DIR, OUTPUT); pinMode(Y_DIR, OUTPUT);

See how the lines of code in setup() are hugging the left margin? That's not where they are supposed to be. You should make it a habit to do Tools => Auto Format in the IDE.

That makes it read like this:

    delayMicroseconds(delayTime);

  }

  void setup() {
    pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
    pinMode(Y_DIR, OUTPUT); pinMode(Y_DIR, OUTPUT);

Now it's the start of setup() is in the wrong place - it should not be indented, a clue that something coming before it is amiss. If you click on an opening curly brace in the IDE the corresponding close brace gets highlighted. Clicking on the opening brace for the for loop highlights the brace before setup(). Clicking on the opening brace for loop() shows no highlight, which pinpoints the problem el_supremo mentioned.

With the new brace the formatted code looks like this:

    delayMicroseconds(delayTime);

  }

}

void setup() {
  pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
  pinMode(Y_DIR, OUTPUT); pinMode(Y_DIR, OUTPUT);

Speaking of for loops, you might want to convert the code in loop() to use them.

silly_cone:
You mean like the corrected code I posted above that compiles without errors?
Yeesh, take a horse to water....

Thank you ^^ i didn't see it xD

Thank you for the explanation, really helpful. The next time i will check it for not to do the same error ^^