const int pin1 = 4;
const int pin2 = 18;
const int pin3 = 13;
const int pin4 = 12;
int secuencia [8][4] = {
{1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1}
};
void setup () {
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
Serial.begin(9600);
Serial.println("Grados a girar: ");
}
void girarMotor(float grados) {
float pasosPorGrado = 200.0 / 360.0;
int pasosTotales = int(pasosPorGrado * abs(grados));
int pasosReales = pasosTotales / 4;
int stepCount = sizeof(secuencia) / sizeof(secuencia[0]);
if (grados >= 1) {
for (int i=0; i<pasosReales; i++) {
for (int j=0; j<stepCount; j++) {
digitalWrite(pin1, secuencia[j][0]);
digitalWrite(pin2, secuencia[j][1]);
digitalWrite(pin3, secuencia[j][2]);
digitalWrite(pin4, secuencia[j][3]);
delay(10);
}
}
}
else if (grados < 0) {
for (int i=0; i<pasosReales; i++) {
for (int j=0; j<stepCount; j++) {
digitalWrite(pin1, secuencia[3][j]);
digitalWrite(pin2, secuencia[2][j]);
digitalWrite(pin3, secuencia[1][j]);
digitalWrite(pin4, secuencia[0][j]);
delay(10);
}
}
}
}
void loop () {
if (Serial.available() > 0) {
float grados = Serial.parseFloat();
if (Serial.read() == '\n') {
girarMotor(grados);
Serial.println("Ingrese los grados: ");
}
}
delay(100);
}