ARDUINO 019. PROGRAMA DE GIRO POR GRADOS

PROGRAMA DE GIRO POR GRADOS

/* Motor Paso a Paso ajustado a grados  
Gira los grados que se le indiquen por el monitor serial o bluetooth
Arduino    Driver ULN200
  8          IN1
  9          IN2
  10         IN3
  11         IN4

int retardo=5;          // Tiempo de retardo en milisegundos (Velocidad del Motor)
int dato_rx;            // valor recibido en grados
int numero_pasos = 0;   // Valor en grados donde se encuentra el motor
String leeCadena;       // Almacena la cadena de datos recibida

void setup() {               
Serial.begin(9600);     // inicializamos el puerto serie a 9600 baudios
pinMode(11, OUTPUT);    // Pin 11 conectar a IN4
pinMode(10, OUTPUT);    // Pin 10 conectar a IN3
pinMode(9, OUTPUT);     // Pin 9 conectar a IN2
pinMode(8, OUTPUT);     // Pin 8 conectar a IN1
}

void loop() {
  while (Serial.available()) {    // Leer el valor enviado por el Puerto serial
    delay(retardo);
    char c  = Serial.read();     // Lee los caracteres
    leeCadena += c;              // Convierte Caracteres a cadena de caracteres
  } 
  if (leeCadena.length()>0){      
        dato_rx = leeCadena.toInt();   // Convierte Cadena de caracteres a Enteros
         Serial.print(dato_rx);         // Envia valor en Grados
         Serial.println(" Grados");
        delay(retardo);
        dato_rx = (dato_rx * 1.4222222222); // Ajuste de 512 vueltas a los 360 grados
  } 

   while (dato_rx>numero_pasos){   // Girohacia la izquierda en grados
       paso_izq();
       numero_pasos = numero_pasos + 1;
   }
   while (dato_rx<numero_pasos){   // Giro hacia la derecha en grados
        paso_der();
        numero_pasos = numero_pasos -1;
   }
  leeCadena = "";   // Inicializamos la cadena de caracteres recibidos
  apagado();         // Apagado del Motor para que no se caliente
}  ///////////////////// Fin del Loop ///////////////////////////

void paso_der(){         // Pasos a la derecha
 digitalWrite(11, LOW);
 digitalWrite(10, LOW); 
 digitalWrite(9, HIGH); 
 digitalWrite(8, HIGH); 
   delay(retardo);
 digitalWrite(11, LOW);
 digitalWrite(10, HIGH); 
 digitalWrite(9, HIGH); 
 digitalWrite(8, LOW); 
   delay(retardo);
 digitalWrite(11, HIGH);
 digitalWrite(10, HIGH); 
 digitalWrite(9, LOW); 
 digitalWrite(8, LOW); 
  delay(retardo);
 digitalWrite(11, HIGH);
 digitalWrite(10, LOW); 
 digitalWrite(9, LOW); 
 digitalWrite(8, HIGH); 
  delay(retardo); 
}

void paso_izq() {        // Pasos a la izquierda
 digitalWrite(11, HIGH);
 digitalWrite(10, HIGH); 
 digitalWrite(9, LOW); 
 digitalWrite(8, LOW); 
  delay(retardo);
 digitalWrite(11, LOW);
 digitalWrite(10, HIGH); 
 digitalWrite(9, HIGH); 
 digitalWrite(8, LOW); 
  delay(retardo);
 digitalWrite(11, LOW);
 digitalWrite(10, LOW); 
 digitalWrite(9, HIGH); 
 digitalWrite(8, HIGH); 
  delay(retardo);
 digitalWrite(11, HIGH);
 digitalWrite(10, LOW); 
 digitalWrite(9, LOW); 
 digitalWrite(8, HIGH); 
  delay(retardo);
}
       
void apagado() {         // Apagado del Motor
 digitalWrite(11, LOW);
 digitalWrite(10, LOW); 
 digitalWrite(9, LOW); 
 digitalWrite(8, LOW); 
 }

No hay comentarios:

Publicar un comentario