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! . 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);
}