Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Control MOTOR NEMA 11 con A4988 y Arduino
- * Antonio Villanueva Segura
- * A4988
- * /ENABLE VMOT +8V
- * MS1 GND GND
- * MS2 2B AZUL (NEMA 11)
- * MS3 2A ROJO (NEMA 11)
- * cable a SLEEP RESET 1A NEGRO (NEMA 11)
- * cable a RESET SLEEP 1B VERDE (NEMA 11)
- * (PIN 2 ARDUINO )STEP VDD +5V_ARDUINO
- * (PIN 5 ARDUINO) DIR GND GND GND_ARDUINO
- */
- /**************************************************************************************************************/
- //Definiciones de PINs en el ARDUINO uno
- #define EN 8 /* Habilita A4988 */
- #define DIR 5 /* Sentido de giro */
- #define STEP 2 /* Pasos */
- /**************************************************************************************************************/
- //Variables globales
- float angulo(-1); //Seleccion
- int pasos(0);
- /**************************************************************************************************************/
- void setup()//Configuracion
- {
- Serial.begin(9600);//Velocidad puerto serie
- pinMode(EN, OUTPUT);//PIN ENABLE como salida
- pinMode(DIR, OUTPUT);//DIR como salida
- pinMode(STEP, OUTPUT);//STEP como salida
- digitalWrite(EN, HIGH); //Ponemos a nivel bajo ENABLE , habilita A4988
- }
- /**************************************************************************************************************/
- void sentidoGiro(boolean sentido){//Sentido de giro
- digitalWrite(DIR, sentido);
- }
- /**************************************************************************************************************/
- void unPaso(){//Un paso
- digitalWrite(EN, LOW); //LOW a4988 activo
- digitalWrite(STEP, HIGH);//Crea el paso
- delay(1);
- digitalWrite(STEP, LOW);
- delay(1);
- }
- /**************************************************************************************************************/
- //Traduce el Angulo a una secuencia de pasos
- int AnguloPasos(float angulo_new){//Paso entero
- int mult(1);
- return (abs (angulo_new) / 1.8)*mult;
- }
- /**************************************************************************************************************/
- //Lee una cadena de texto del puerto serie
- String leeCadena(){
- String cadena="";
- if (Serial.available()) {cadena = Serial.readStringUntil('\n');}
- return cadena;
- }
- /**************************************************************************************************************/
- //Menu lectura Serie, devuelve un int valor de Angulo
- float menu(){
- Serial.print ("Angulo :");
- String lectura="";
- while (lectura== "" ){lectura=leeCadena();}//Espera un valor numerico dee grados
- Serial.println (lectura);//Muestra el numero de pasos
- return lectura.toFloat();
- }
- /**************************************************************************************************************/
- /**************************************************************************************************************/
- /**************************************************************************************************************/
- void loop()//Bucle principal ARDUINO
- {
- angulo = menu();//Muestra mensaje y espera un Angulo
- pasos=AnguloPasos(angulo);//Traduce el angulo a numero de pasos
- sentidoGiro (angulo >0? true :false);//Selecciona sentido angulo + o -
- while (pasos--){unPaso();}//Ejecuta el numero de pasos
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement