//Definir los pines para los relevadores en avance y retroceso
const int avance = 27;
const int retroceso = 26;
//Definir el pin de señal del sensor infrarrojo
const int sensor = 14;
//Definir variables
int contadorEngrane = 0;
int contadorInterrupciones = 0;
int t = 2000;
//Generar funciones
//Funcion para mover el motor adelante
void motorAdelante(){
digitalWrite(avance, HIGH);
}
//Funcion para mover el motor atras
void motorAtras(){
digitalWrite(retroceso, HIGH);
}
//Funcion para detener el motor
void detenerMotor(){
digitalWrite(avance, LOW);
digitalWrite(retroceso, LOW);
}
//Funcion para contar las interrupciones en el sensor
void interrupciones(){
//contadorEngrane++;
//Serial.println(contadorEngrane);
Serial.println("interrupcion");
}
//Setear el ciclo que se va a generar
void setup(){
// Configurar los pines de los relevadores
pinMode(avance, OUTPUT);
pinMode(retroceso, OUTPUT);
// Configurar el pin del sensor infrarrojo como entrada y activar las interrupciones
pinMode(sensor, INPUT_PULLDOWN);
//attachInterrupt(digitalPinToInterrupt(sensor), interrupciones, RISING);
attachInterrupt(sensor, interrupciones, RISING);
// Iniciar la comunicación serial
Serial.begin(9600);
}
void loop(){
Serial.println("¿Cuántos grados desea mover el motor?");
while (!Serial.available());
int grados = Serial.parseInt();
contadorInterrupciones = int(grados/20);
Serial.print("Moviéndose ");
Serial.print(grados);
Serial.print(" grados...");
//Mover el motor hacia adelante
motorAdelante();
while (contadorEngrane < contadorInterrupciones);
detenerMotor();
delay(t);
//Regresar el motor a su posición inicial
while (contadorEngrane < contadorInterrupciones*2);
detenerMotor();
//Reinciar el contador
contadorEngrane = 0;
}