Hola a todos, soy nuevo en este foro y también en la programación con arduino. Bueno estoy trabajando en un proyecto y quiero hacer funcionar tres motores paso a paso bipolares con el arduino, por lo cuál he estado realizando diversas pruebas, desde la librería stepper, hasta llegar a hacerlo con digitalWrite() para ir activando las bobinas secuencialmente con delays. El problema es que si lo hago de esta última forma, al probar los tres motores al mismo tiempo, estos presentan grandes vibraciones, mientras que si solo dejo funcionando uno de ellos no hay ningún problema; a lo que viene mi pregunta, ¿se puede usar la función digitalWrite() más de una vez al mismo tiempo? porque cuando lo hago mas de una vez tal y como ven en el código que les presento, me pasa el problema de las vibraciones.
int ENX = 5;
int ENY = 4;
int ENZ = 3;
int mSecPaso=2000;
void setup()
{
//Enables
pinMode(ENX, OUTPUT);
pinMode(ENY, OUTPUT);
pinMode(ENZ, OUTPUT);
//Salidas motor 1
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
//Salidas motor 2
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
//Salidas motor 3
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(ENX, HIGH);
digitalWrite(ENY, LOW);
digitalWrite(ENZ, LOW);
}
void loop()
{
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delayMicroseconds(mSecPaso);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
delayMicroseconds(mSecPaso);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delayMicroseconds(mSecPaso);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
delayMicroseconds(mSecPaso);
//Motor 2
/*
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delayMicroseconds(mSecPaso);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delayMicroseconds(mSecPaso);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
delayMicroseconds(mSecPaso);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delayMicroseconds(mSecPaso);
//digitalWrite(ENZ, HIGH);
//Motor 3
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delayMicroseconds(mSecPaso);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delayMicroseconds(mSecPaso);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
delayMicroseconds(mSecPaso);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delayMicroseconds(mSecPaso);
*/
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.
.