/*---------------------------------------*\
| Simple direct drive of Bipolar Stepper |
\*---------------------------------------*/
// pins connected
#define Ap 10 // A+ line
#define Am 11 // A- line
#define Bp 9 // B+ line
#define Bm 8 // B- line
int i;
int sentido;
int analog0;
int tempo;
void setup() {
// set output
pinMode(Ap,OUTPUT); pinMode(Am,OUTPUT);
pinMode(Bp,OUTPUT); pinMode(Bm,OUTPUT);
pinMode(4, INPUT);
Serial.begin(9600);
}
void loop() {
// This is Wave Fullstep motion - only one coil energized at a time
sentido = digitalRead(4);
if (sentido == HIGH)
{
roda_horario();
}
if (sentido == LOW)
{
roda_antihorario();
}
}
void roda_horario()
{
ler_tempo();
delay(tempo);
digitalWrite(Bm,LOW) ; digitalWrite(Ap,HIGH);
delay(tempo);
digitalWrite(Ap,LOW) ; digitalWrite(Bp,HIGH);
delay(tempo);
digitalWrite(Bp,LOW) ; digitalWrite(Am,HIGH);
delay(tempo);
digitalWrite(Am,LOW) ; digitalWrite(Bm,HIGH);
}
void roda_antihorario()
{
ler_tempo();
delay(tempo);
digitalWrite(Am,LOW) ; digitalWrite(Bm,HIGH);
delay(tempo);
digitalWrite(Bp,LOW) ; digitalWrite(Am,HIGH);
delay(tempo);
digitalWrite(Ap,LOW) ; digitalWrite(Bp,HIGH);
delay(tempo);
digitalWrite(Bm,LOW) ; digitalWrite(Ap,HIGH);
}
void ler_tempo()
{
analog0 = analogRead(0);
tempo = map(analog0, 0, 1023, 300, 10);
}