Ante la insistencia de varios compañeros incluyo aquí el programa utilizado para el accionamiento del stepper y los servos de puertas.
Podréis apreciar que consta de 2 programas independientes, recopilados de la red, los cuales incluí en uno solo comprobando que solapasen entradas/salidas y ajustando los parámetros a mis preferencias.
Hay multitud de estos programas para poder cumplir nuestras expectativas, tanto en la web oficial como en los foros y blogs dedicados a Arduino, por descontado el entorno de programación incluye ejemplos que podemos usar para nuestros proyectos, con un poco de investigación y pruebas, seguro que obtendremos el resultado esperado.
//PLATAFORMA Y PUERTAS MÓDULO VAPOR T-TRAKEl programa está listo para copiar y pegar
//PLATAFORMA PASO A PASO
#include <Stepper.h>
const int stepsPerRevolution = 100;
int pulsador = 0;
int entrada = 2;
int pulsador1 = 0;
int entrada1 = 3;
int motorPin1 = 8; // Pines del Motor
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime1 = 50; // delayTime1 determina la velocidad de giro entre uno y otro paso
//PUERTAS SERVOS
#include <VarSpeedServo.h>
int button1 = 4; //button pin, conexión ground mueve servo
int button2 = 5;
int press1 = 0;
int press2 = 0;
VarSpeedServo servo1;
VarSpeedServo servo2;
const int servoPin1 = 6;
const int servoPin2 = 7;
void setup()
{
//PLATAFORMA
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(motorPin1, OUTPUT); // Configuración de los pines como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
//PUERTAS
pinMode(button1, INPUT);
pinMode(button2, INPUT);
servo1.attach(6);
servo2.attach(7);
digitalWrite(4, HIGH); //enable pullups to make pin high
digitalWrite(5, HIGH);
}
void loop()
{
//PLATAFORMA
pulsador = digitalRead(entrada);
if (pulsador == HIGH)
{ // Punto D (Cuarto)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);
// Punto C (Tercero)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto B (Segundo)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto A (Primero)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);
}
pulsador1 = digitalRead(entrada1);
if (pulsador1 == HIGH)
{ // Punto A (Primero)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);
// Punto B (Segundo)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto C (Tercero)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto D (Cuarto)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime1); }
//PUERTAS
press1 = digitalRead(button1);
press2 = digitalRead(button2);
if (press1 == LOW)
{
servo1.write(500,20); // GRADOS GIRO, VELOCIDAD
}
else
{
servo1.write(80,20);
}
if (press2== LOW)
{
servo2.write(500,10);
}
else
{
servo2.write(80,10);
}
//delay(50);
}
}
Artículos relacionados:
Jordi, muchas gracias por poner el programa. Lo acabo de copiar y guardar para cuando llegue la ocasión.
ResponderEliminarGracias a ti por tu interés, ya sabes. cualquier duda no dudes en consultar.
ResponderEliminar