PRÁCTICA 6.1 ARDUINO Control de motor Pap de Lectora Multimedia

Sdílet
Vložit
  • čas přidán 13. 09. 2024

Komentáře • 4

  • @Waldox_
    @Waldox_ Před měsícem +1

    Un excelente tutorial, estuve buscando y casi nadie lo explica como hacer funcionar uno de estos motores.
    Gracias a un tiktok me salió para ver este tutorial , altamente recomendado.

  • @Waldox_
    @Waldox_ Před měsícem +1

    //Es el código implementado, yo lo probé en un arduino nano y funciona 10/10.
    // Definicion de pones de motor paso a paso (motor de DVD)
    const int motorPin1 = 8; // A+
    const int motorPin2 = 9; // A-
    const int motorPin3 = 10; // B+
    const int motorPin4 = 11; // B-
    // Variables para controlar el sentido de giro del motor
    boolean sentidoHorario = true; // Variable para controlar el sentido horario del motor
    unsigned long tiempoAnterior = 0; // Variable para almacenar el tiempo anterior
    const unsigned long intervalo = 2000; // Intervalo de tiempo en milisegundos (2 segundos)
    // Define el patrón de secuencia para el motor paso a paso de 4 fases
    int pasoSecuencia[][4] = {
    {1, 0, 0, 1}, // Paso 1
    {0, 1, 0, 1}, // Paso 2
    {0, 1, 1, 0}, // Paso 3
    {1, 0, 1, 0}, // Paso 4
    };
    int pasoActual = 0;
    void setup() {
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(motorPin3, OUTPUT);
    pinMode(motorPin4, OUTPUT);
    }
    void loop() {
    unsigned long tiempoActual = millis();
    // Verificamos si paso el intervalo de tiempo
    if (tiempoActual - tiempoAnterior >= intervalo) {
    // Cambiar el sentido de giro del motor
    sentidoHorario = !sentidoHorario;
    // Actualizar el tiempo anterior
    tiempoAnterior = tiempoActual;
    }
    // Seleccionar la secuencia de pasos actual
    int paso = pasoActual;
    // Activar los pines según la secuencia de pasos actual y el sentido de giro
    if (sentidoHorario) {
    digitalWrite(motorPin1, pasoSecuencia[paso][0]);
    digitalWrite(motorPin2, pasoSecuencia[paso][1]);
    digitalWrite(motorPin3, pasoSecuencia[paso][2]);
    digitalWrite(motorPin4, pasoSecuencia[paso][3]);
    } else {
    // Invertir la secuencia para el sentido antiHorario
    digitalWrite(motorPin1, pasoSecuencia[paso][3]);
    digitalWrite(motorPin2, pasoSecuencia[paso][2]);
    digitalWrite(motorPin3, pasoSecuencia[paso][1]);
    digitalWrite(motorPin4, pasoSecuencia[paso][0]);
    }
    // Incrementar el paso actual para siguiente iteración
    pasoActual = (pasoActual + 1) %4;
    // Añadir un pequeño retraso para controlar la velocidad del motor
    delay(10); // Puedes ajustar este valor según la velocidad deseada
    }