Este sketch foi retirado de http://elprofegarcia.com/?page_id=2
/* Motor Paso a Paso ajustado a grados by: www.elprofegarcia.com Gira los grados que se le indiquen por el monitor serial o bluetooth Arduino Driver ULN200 8 IN1 9 IN2 10 IN3 11 IN4 Tienda en Linea: http://dinastiatecnologica.com/ */ 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); }
Nenhum comentário:
Postar um comentário