/*
M_MOTOR_PAP_UNIPO_EXPER_2_FORO v2
*/
// ================================== ENGRAL JUL 2023 =================================
const int LIMITE_CICLOS = 145;
int contadorCiclos;
const int LIMITE_PASOS = 4;
int contadorPasos;
const unsigned long INTERVALO_PASOS = 3;
const unsigned long INTERVALO_CICLOS = 2000;
unsigned long TiempoInicial;
// *****************************************
boolean estadoLED7 = true;
boolean estadoLED12 = true;
const int INTERVALO_LED_7 = 513 ; //tiempo de INTERVALO LED 7
const int INTERVALO_LED_12 = 200 ; //tiempo de INTERVALO LED 12
unsigned long tiempoLED7;
unsigned long tiempoLED12;
boolean ejecutarPaso = true;
boolean ejecutarDescanso = true;
const byte CONF_DESCANSO = 0B0000;
const byte CONF_PASO[LIMITE_PASOS + 1] = {0B0110, 0B0101, 0B1001, 0B1010, CONF_DESCANSO};
// =================================== FUNCIONES " contadorPasos" DEL MOTOR PAP ===================================
void darPaso(int numPaso) {
byte tmpB = PORTB; // copia el estado del port B
tmpB &= 0B11110000; // enmascara los pines 8 a 11
PORTB = tmpB | CONF_PASO[numPaso]; // cambia los 4 pines en una sola operación
/*
Serial.print(contadorCiclos);
Serial.print("\t\t");
Serial.println(numPaso);
*/
}
void setup() {
Serial.begin(115200);
Serial.println(" ======== TITULO: M_MOTOR_PAP_UNIPO_EXPER_2_copia_FORO =============");
Serial.println("");
pinMode(7, OUTPUT); // pin digital 7 de Arduino a intermitente
pinMode(8, OUTPUT); // pin digital 8 de Arduino a IN1 de modulo controlador
pinMode(9, OUTPUT); // pin digital 9 de Arduino a IN2 de modulo controlador
pinMode(10, OUTPUT); // pin digital 10 de Arduino a IN3 de modulo controlador
pinMode(11, OUTPUT); // pin digital 11 de Arduino a IN4 de modulo controlador
pinMode(12, OUTPUT); // pin digital 12 de Arduino a intermitente
contadorCiclos = 0;
contadorPasos = 0;
byte tmpB = PORTB; // copia el estado del port B
tmpB &= 0B11110000; // enmascara los pines 8 a 11
PORTB = tmpB; // pone LOW en los pines 8 a 11 sin cambiar los otros
delay(50);
}
void loop() {
// ***************************** SECCION: LEDS INTERMITENTES *****************************
if ((millis() - tiempoLED7) >= INTERVALO_LED_7) { // Tiempo 513
estadoLED7 = !estadoLED7;
digitalWrite (7, estadoLED7);
tiempoLED7 = millis();
}
if ((millis() - tiempoLED12) >= INTERVALO_LED_12) { // Tiempo 200
estadoLED12 = !estadoLED12;
digitalWrite (12, estadoLED12);
tiempoLED12 = millis();
}
// ******************************* SECCION: MOTOR PAP ***********************
if (contadorCiclos < LIMITE_CICLOS) {
if (ejecutarPaso) {
darPaso(contadorPasos);
ejecutarPaso = false;
}
else {
if (millis() - TiempoInicial > INTERVALO_PASOS ) {
TiempoInicial = millis(); // ============== "TiempoInicial" toma el valor actual de "millis"
if (contadorPasos == 3) {
contadorPasos = 0;
contadorCiclos++;
} else {
contadorPasos++;
}
ejecutarPaso = true;
}
}
}
else {
if (ejecutarDescanso) {
darPaso(LIMITE_PASOS);
ejecutarDescanso = false;
}
else {
if (millis() - TiempoInicial > INTERVALO_CICLOS) {
TiempoInicial = millis(); // ============== "TiempoInicial" toma el valor actual de "millis"
contadorPasos = 0;
contadorCiclos = 0;
ejecutarDescanso = true;
}
}
}
// delay(1); // para wokwi
}
// ============================================= FIN ===============================