#include "servomotor.h" // Incluye el archivo de encabezado para el control del servo motor
/* se declararon dos variables boleanas que indican que puede ser modificada por interrupcion*/
volatile bool flag = false; // Variable booleana modificable por una interrupción (flag)
/*interrupción flag" es una variable que se utiliza para indicar si una interrupción ha ocurrido o no.*/
volatile bool switchMode = false; // Estado para alternar entre modos
#define SERVO 18 // Define el pin del servo motor
/*se define los pines */
const int interruptPin = 2; // Pin donde se conecta el botón de interrupción
const int ledPin = 13; // Pin para el LED indicador
MyServo servomotor(SERVO); // se crea el objeto del servo motor que esa definido en el pin 18
//bool upButtonState = HIGH;
//bool downButtonState = HIGH;
void setup() {
servomotor.init(); // se llama a la funcion para Inicializa el motor
pinMode(ledPin, OUTPUT); //se utiliza un pin de salida como ejercicio para verificar la interrupcion
attachInterrupt(digitalPinToInterrupt(interruptPin), handleInterrupt, FALLING);
// 'handleInterrupt 'asocia la interrupcion generada por el cambio del interrupPint
}
void loop() {
if (!switchMode) { // Si no estamos en modo de cambio, ejecutar este bloque de código
toggleLED2(); // Llama a la función que controla el LED y el servo en modo 2
}
else{ // Si estamos en modo de cambio, ejecutar este bloque de código
toggleLED1(); // Llama a la función que controla el LED y el servo en modo 1
}
}
void handleInterrupt() {
flag = true; // Marca la bandera como verdadera cuando se activa la interrupción
switchMode = !switchMode; // Cambia el modo cuando se presiona el interruptor
}
void toggleLED1(){
// Modo 1: Mantener LED intermitente y mover el servo motor
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
servomotor.toggle1(); // Realiza una operación específica en el servo motor
servomotor.toggle2(); // Realiza una operación específica en el servo motor
}
void toggleLED2() {
// Modo 2: Mantener LED encendido y realizar operaciones en el servo motor
digitalWrite(ledPin, HIGH);
servomotor.toggle3(); // Realiza una operación específica en el servo motor
servomotor.toggle4(); // Realiza una operación específica en el servo motor
}