#define MOTOR1_DIR 9 //pin de dirección para A4988
#define MOTOR1_STEP 10 //pin de paso para el A4988
#define MOTOR2_DIR 35 //pin de dirección para A4988
#define MOTOR2_STEP 36 //pin de paso para el A4988
#define MOTOR3_DIR 41 //pin de dirección para A4988
#define MOTOR3_STEP 42 //pin de paso para el A4988
#define HORARIO HIGH
#define ANTI_HORARIO LOW
const uint8_t SW1_BUTTON = 4;
const uint8_t SW2_BUTTON = 5;
void motor_on(int motor,int can_pasos){//función utilizada para encender el motor
for(int i=0; i<can_pasos; i++) { // simular los pasos del motor
digitalWrite(motor, HIGH); //le damos un pulso positivo para generar el paso
delay(10);
digitalWrite(motor, LOW); //le damos un pulso negativo acabar el paso
delay(10);
}
}
void setup() {
pinMode(MOTOR1_DIR, OUTPUT);
pinMode(MOTOR1_STEP, OUTPUT);
pinMode(MOTOR2_DIR, OUTPUT);
pinMode(MOTOR2_STEP, OUTPUT);
pinMode(MOTOR3_DIR, OUTPUT);
pinMode(MOTOR3_STEP, OUTPUT);
pinMode(SW1_BUTTON, INPUT_PULLUP);
pinMode(SW2_BUTTON, INPUT_PULLUP);
motor_on(MOTOR2_STEP, 60);
motor_on(MOTOR3_STEP, 60);
}
void loop() {
int SW1_ButtonState = digitalRead(SW1_BUTTON);
int SW2_ButtonState = digitalRead(SW2_BUTTON);
//Interruptor 1 - deteccion circular
if(SW1_ButtonState == LOW){
motor_on(MOTOR1_STEP, 700);
motor_on(MOTOR2_STEP, 60);
}
//Interruptor 2 - deteccion rectangular
if(SW2_ButtonState == LOW){
motor_on(MOTOR1_STEP, 300);
motor_on(MOTOR3_STEP, 60);
}
//Interruptor 1 y 2 - otra figura
if (SW1_ButtonState == LOW && SW2_ButtonState == LOW){
motor_on(MOTOR1_STEP, 900);
}
delay(1000); // this speeds up the simulation
}