Materiales:
-Arduino
-Protoboard
-Motor a pasos
-Cables Dupont
-1 UNL2003.
Codigo:
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 Monitor serial
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 Monitor 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
}
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