Stepper motor with Spark Core

I don’t see an issue in the port… should increment or decrement steps based on if the number if positive or negative. Then in the step routine it’s going to count 0,1,2,3,0,1,2,3 or 3,2,1,0,3,2,1,0. Should change the direction.

Hello!

I have a very little experience programming arduinos and the spark core, but I have this dummy code, I’m pretty sure that must be a better way to program the steps, but this work for me and the motor moves good, if any of you can improve it or use it. I’m ok with that! :smile: . As I said I’m not really familiar, but here’s the code.

/*
*
* This is my dummy example of how to spin a stepper motor
*
*/
/*
// MOTOR PINS VARIABLES
int motor_pin_1 = 0;    // Orange   - 28BYJ48 pin D0
int motor_pin_2 = 1;    // Yellow   - 28BYJ48 pin D1
int motor_pin_3 = 2;    // Pink     - 28BYJ48 pin D2
int motor_pin_4 = 3;    // Blue     - 28BYJ48 pin D3
                      // Red        - 28BYJ48 pin 5 (VCC)
boolean flag = true;  // This means that the motor will clockwise first.

*/

// -----------------------------------
// Controlling StepperMotor over the Internet
// -----------------------------------

// name the pins
int motor_pin_1 = D0;
int motor_pin_2 = D1;
int motor_pin_3 = D2;
int motor_pin_4 = D3;
int motor_vcc   = D7;
int motorSpeed = 1700;  //variable to set stepper speed
int countsperrev = 145; // number of steps per full revolution : 300

boolean flag = true;  // This means that the motor will clockwise first.

// This routine runs only once upon reset
void setup()
{
   
   // Configure the pins to be outputs
   pinMode(motor_pin_1, OUTPUT);
   pinMode(motor_pin_2, OUTPUT);
   pinMode(motor_pin_3, OUTPUT);
   pinMode(motor_pin_4, OUTPUT);

}

// This routine loops forever
void loop()
{
   lockUnlockDoor();
   delay(3000);
}

void lockUnlockDoor(){
    if(flag){
      for(int i = 0; i < countsperrev; i++){ clockwise(); }
      flag = false;
    }else{
      for(int i = 0; i < countsperrev; i++){ counterclockwise(); } 
      flag = true;
    }
}


void counterclockwise()
{
    //1000
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //1100
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, HIGH);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //0100
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, HIGH);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //0110
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, HIGH);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //0010
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //0011  
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
    //0011  
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
    //0001 
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
    //1001
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
}

void clockwise()
{
    //1001
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
    //0001 
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
    //0011  
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
    //0011  
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, HIGH);
    delayMicroseconds(motorSpeed);
    
    //0010
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //0110
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, HIGH);
    digitalWrite(motor_pin_3, HIGH);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //0100
    digitalWrite(motor_pin_1, LOW);
    digitalWrite(motor_pin_2, HIGH);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
    //1100
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, HIGH);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    //1000
    digitalWrite(motor_pin_1, HIGH);
    digitalWrite(motor_pin_2, LOW);
    digitalWrite(motor_pin_3, LOW);
    digitalWrite(motor_pin_4, LOW);
    delayMicroseconds(motorSpeed);
    
}