/*---------------------------------------*\
| Simple direct drive of Bipolar Stepper |
\*---------------------------------------*/
// pins connected
#define Ap 10 // A+ line
#define Am 11 // A- line
#define Bp 9 // .
#define Bm 8 // .
signed long int contador =0;
int Led_RED = 3;
int Led_GREEN = 5;
void setup() {
// set output
pinMode(Led_RED,OUTPUT);
pinMode(Led_GREEN,OUTPUT);
pinMode(Ap,OUTPUT); pinMode(Am,OUTPUT);
pinMode(Bp,OUTPUT); pinMode(Bm,OUTPUT);
Serial.begin(9600);
}
void loop() {
// This is Wave Fullstep motion - only one coil energized at a time
float t = 10.0 + analogRead(A0)*(490.0 / 1023.0); //converte a tensão lida no potenciômetro para tempo em (ms)
//transformar tensão lida em atraso delay
Serial.print("t= ");
Serial.print(t);
Serial.println(" ms");
if(digitalRead(2)==HIGH){
roda_antihor();
digitalWrite(Led_RED,HIGH);
digitalWrite(Led_GREEN,LOW);
delay(t);
}
else{
roda_hor();
digitalWrite(Led_GREEN,HIGH);
digitalWrite(Led_RED,LOW);
delay(t);
}
}
void roda_hor() {
digitalWrite(Bm,LOW) ; digitalWrite(Ap,HIGH);
delay(10);
digitalWrite(Ap,LOW) ; digitalWrite(Bp,HIGH);
delay(10);
digitalWrite(Bp,LOW) ; digitalWrite(Am,HIGH);
delay(10);
digitalWrite(Am,LOW) ; digitalWrite(Bm,HIGH);
delay(10);
contador = contador+4;
}
void roda_antihor() {
digitalWrite(Ap,LOW) ; digitalWrite(Bm,HIGH);
delay(10);
digitalWrite(Bm,LOW) ; digitalWrite(Am,HIGH);
delay(10);
digitalWrite(Am,LOW) ; digitalWrite(Bp,HIGH);
delay(10);
digitalWrite(Bp,LOW) ; digitalWrite(Ap,HIGH);
contador = contador-4;
}