Go Down

Topic: Mover motor a pasos de izquierda o derecha (Read 235 times) previous topic - next topic

masterlazo

Nov 25, 2013, 04:26 am Last Edit: Nov 25, 2013, 04:24 pm by masterlazo Reason: 1
ando buscando un codigo para mover un motor a pasos con dos swith que al momento de precionar un swith se mueva a la derecha y otro que se mueva a la izquierda y que al no precionar nigun switch ese se quede fijo porfavor una ayuda este es el programa que tengo y no puedo hacer que gire a un lado y al otro.
int mA=3; int mB=4; int mC=5; int mD=6;
int mSecPaso=1500;/*tiempo en microsegundos entre paso y paso la velocidad sera:
velocidad=1000000/mSecPaso en vueltas/segundo. Valor minimo 750 maximo 2350
con menos de 750 no arranca con mas de 2350 se salta pasos.*/

void setup() {
pinMode(mA, OUTPUT);
pinMode(mB, OUTPUT);
pinMode(mC, OUTPUT);
pinMode(mD, OUTPUT);
pinMode(mD, OUTPUT);
//INICIAR EN PARO
digitalWrite(mA, LOW);
digitalWrite(mB, LOW);
digitalWrite(mC, LOW);
digitalWrite(mD, LOW);
Serial.begin(9600);
}

void izquierda(){
//paso 1
digitalWrite(mA, LOW);
digitalWrite(mB, HIGH);
digitalWrite(mC, HIGH);
digitalWrite(mD, LOW);
delayMicroseconds(mSecPaso);
//paso 2
digitalWrite(mC, LOW);
digitalWrite(mD, HIGH);
delayMicroseconds(mSecPaso);
//paso 3
digitalWrite(mA, HIGH);
digitalWrite(mB, LOW);
delayMicroseconds(mSecPaso);
//paso 4
digitalWrite(mC, HIGH);
digitalWrite(mD, LOW);
delayMicroseconds(mSecPaso);
}//FIN izquierda

void derecha(){
//paso 1
digitalWrite(mA, HIGH);
digitalWrite(mB, LOW);
digitalWrite(mC, HIGH);
digitalWrite(mD, LOW);
delayMicroseconds(mSecPaso);
//paso 2
digitalWrite(mC, LOW);
digitalWrite(mD, HIGH);
delayMicroseconds(mSecPaso);
//paso 3
digitalWrite(mA, LOW);
digitalWrite(mB, HIGH);
delayMicroseconds(mSecPaso);
//paso 4
digitalWrite(mC, HIGH);
digitalWrite(mD, LOW);
delayMicroseconds(mSecPaso);
}//FIN derecha

void loop() {
for(int i=0; i<100; i++) derecha();
delay (1000);
for(int i=0; i<100; i++) izquierda();
Serial.print("mSecPaso =");
Serial.println(mSecPaso, DEC); //Muestra el valor de mSecPaso en la pantalla del ordenador
delay (1000);
//Si se quiere ver la variación de velocidad en el motor en función de mSecPaso, quitar // en la linea siguiente.
//mSecPaso+=50;
}

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy