Soy nueva en esto y estoy tratando de unir un par de códigos para que mis motores (Servomotor y motor a pasos) trabajen simultáneamente.
A continuación les dejo mi código:
#include <Servo.h>
Servo myservo; // crea el objeto servo
int pos = 0; // posicion del servo
int IN1 = 8; // pin digital 8 de Arduino a IN1 de modulo controlador
int IN2 = 9; // pin digital 9 de Arduino a IN2 de modulo controlador
int IN3 = 10; // pin digital 10 de Arduino a IN3 de modulo controlador
int IN4 = 11; // pin digital 11 de Arduino a IN4 de modulo controlador
int demora = 20; // demora entre pasos, no debe ser menor a 10 ms.
void setup() {
Serial.begin(9600);
pinMode(IN1, OUTPUT); // todos los pines como salida
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
myservo.attach(2); // vincula el servo al pin digital 9
}
void loop() {
for (pos = 0; pos <= 90; pos += 1) //aqui empieza el servomotor
{
myservo.write(pos);
delay(10);
}
delay(5000);
for (pos = 90; pos >= 0; pos -= 1)
{
myservo.write(pos);
delay(10);
}Aqui termina
for (int i = 0; i < 128; i++) // aqui empieza el motor a pasos
{
digitalWrite(IN1, 0); // paso 1
digitalWrite(IN2, 0);
digitalWrite(IN3, 0);
digitalWrite(IN4, 1);
delay(demora);
digitalWrite(IN1, 0); // paso 2
digitalWrite(IN2, 0);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
delay(demora);
digitalWrite(IN1, 0); // paso 3
digitalWrite(IN2, 1);
digitalWrite(IN3, 0);
digitalWrite(IN4, 0);
delay(demora);
digitalWrite(IN1, 1); // paso 4
digitalWrite(IN2, 0);
digitalWrite(IN3, 0);
digitalWrite(IN4, 0);
delay(demora);
}
{
digitalWrite(IN1, LOW); // detiene por 5 seg.
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(5000);
}
for (int i = 0; i < 128; i++) // 512*4 = 2048 pasos
{
digitalWrite(IN1, 1); // paso 1
digitalWrite(IN2, 0);
digitalWrite(IN3, 0);
digitalWrite(IN4, 0);
delay(demora);
digitalWrite(IN1, 0); // paso 2
digitalWrite(IN2, 1);
digitalWrite(IN3, 0);
digitalWrite(IN4, 0);
delay(demora);
digitalWrite(IN1, 0); // paso 3
digitalWrite(IN2, 0);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
delay(demora);
digitalWrite(IN1, 0); // paso 4
digitalWrite(IN2, 0);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
delay(demora);
} // Aqui termina el motor PAP
}
actualmente el programa trabaja por bloques (primero trabaja uno y cuando este termina empieza el otro), primero el servomotor avanza hasta 90 grados, espera 5 segundos y regresa a su posición, de igual manera el motor a pasos
Lo que espero que realice el programa es: que ambos motores empiecen a trabajar al mismo tiempo, espero su ayuda y sus consejos...