I'm trying to make a custom library for the 28byj48 Stepper Motor, using the ULN2003APG driver. I know that other people made some, but I wanted to do one by myself.
Problem is that I tested a little bit of code utilizing Arduino, and when I put it as a library, it doesn't function anymore.
Here is the code in Arduino:
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int step [4][4] =
{
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1}
};
void setup()
{
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop()
{
int val = analogRead(2);
int v = map(val, 0, 1024, 0, 100);
Serial.println(v);
if(v > 80)
{ aclck(100,1); }
else if(v < 20) { clck(100,1); }
else{ clckstop(10, 10); }
}
void clckstop(int d, int steps)
{
for(int i = 0; i < 4; i++)
{
digitalWrite(IN1, 0);
digitalWrite(IN2, 0);
digitalWrite(IN3, 0);
digitalWrite(IN4, 0);
delay(d);
}
}
void aclck(int d, int steps)
{
int j = 0;
while(j != steps)
{
j++;
for(int i = 0; i < 4; i++)
{
digitalWrite(IN1, step[i][0]);
digitalWrite(IN2, step[i][1]);
digitalWrite(IN3, step[i][2]);
digitalWrite(IN4, step[i][3]);
delay(d);
}
}
}
void clck(int d, int steps)
{
int j = 0;
while(j != steps)
{
j++;
for(int i = 0; i < 4; i++)
{
8,
delay(d);
}
}
}
Here is the .cpp of the library I created:
#include "Arduino.h"
#include "Stepper28.h"
int step[4][4] =
{
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1}
};
Stepper28::Stepper28(int IN1, int IN2, int IN3, int IN4)
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
_IN1 = IN1;
_IN2 = IN2;
_IN3 = IN3;
_IN4 = IN4;
}
void Stepper28::clockwise(int d, int steps)
{
int j = 0;
while(j != steps)
{
j++;
for(int i = 0; i < 4; i++)
{
digitalWrite(_IN1, step[i][3]);
digitalWrite(_IN2, step[i][2]);
digitalWrite(_IN3, step[i][1]);
digitalWrite(_IN4, step[i][0]);
delay(d);
}
}
}
The header:
#ifndef Stepper28_h
#define Stepper28_h
class Stepper28
{
public:
int step[4][4];
Stepper28(int IN1, int IN2, int IN3, int IN4);
void clockwise(int d, int steps);
private:
int _IN1, _IN2, _IN3, _IN4;
};
#endif
And the code, using the new library:
#include <Stepper28.h>
Stepper28 Stepper28(8, 9, 10, 11);
void setup() {
Serial.begin(9600);
}
void loop() {
Stepper28.clockwise(10,100);
}
When I run this last one, it seems that is not triggering the digitalWrite() for the pins on the driver.