Pages: [1]   Go Down
Author Topic: Mover motor a pasos de izquierda o derecha  (Read 156 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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;
}
« Last Edit: November 25, 2013, 10:24:17 am by masterlazo » Logged

Pages: [1]   Go Up
Jump to: