Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Control JOYSTICK MOTOR NEMA 11 con A4988 y Arduino
- *
- * Antonio Villanueva Segura
- * A4988
- * /ENABLE VMOT +8V
- * (PIN 3 ARDUINO ) MS1 GND GND
- * (PIN 4 ARDUINO ) MS2 2B AZUL (NEMA 11)
- * (PIN 5 ARDUINO ) 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 STEP 2 /* Pasos */
- /* RESOLUCION uPASO FULL 1/2 1/4 1/8 1/16 */
- #define MS1 3 /* control pasos 0 1 0 1 1 */
- #define MS2 4 /* control pasos 0 0 1 1 1 */
- #define MS3 5 /* control pasos 0 0 0 0 1 */
- #define DIR 6 /* Sentido de giro */
- #define EN 8 /* Habilita A4988 */
- /**************************************************************************************************************/
- //Variables globales
- int lecturaJoystick(-1); //Seleccion
- /**************************************************************************************************************/
- 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
- pinMode(MS1, OUTPUT);//control pasos
- pinMode(MS2, OUTPUT);//control pasos
- pinMode(MS3, OUTPUT);//control pasos
- digitalWrite(MS1, LOW); //Configura control paso FULL
- digitalWrite(MS2, LOW); //Configura control paso FULL
- digitalWrite(MS3, LOW); //Configura control paso FULL
- digitalWrite(EN, HIGH); //Ponemos a nivel bajo ENABLE , habilita A4988
- }
- /**************************************************************************************************************/
- void sentidoGiro(boolean sentido){//Sentido de giro
- digitalWrite(DIR, sentido);
- }
- /**************************************************************************************************************/
- void cambiaMicroPaso(bool ms1,bool ms2,bool ms3){
- digitalWrite(MS1, ms1); //Configura control paso
- digitalWrite(MS2, ms2); //Configura control paso
- digitalWrite(MS3, ms3); //Configura control paso
- }
- /**************************************************************************************************************/
- void seleccionMicroPaso (int upaso){ //Seleccion del uPaso
- switch (upaso){
- case 0://FULL
- cambiaMicroPaso(LOW,LOW,LOW);
- Serial.println("\nFULL (1.8°)");
- break;
- case 1:// 1/2
- cambiaMicroPaso(HIGH,LOW,LOW);
- Serial.println("\nuPaso 1/2 (0.9°)");
- break;
- case 2:// 1/4
- cambiaMicroPaso(LOW,HIGH,LOW);
- Serial.println("\nuPaso 1/4 (0.45°)");
- break;
- case 3:// 1/8
- cambiaMicroPaso(HIGH,HIGH,LOW);
- Serial.println("\nuPaso 1/8 (0.225°)");
- break;
- case 4:// 1/16
- cambiaMicroPaso(HIGH,HIGH,HIGH);
- Serial.println("\nuPaso 1/16 (0.1125°)");
- break;
- }
- }
- /**************************************************************************************************************/
- void unPaso(){//Un paso
- digitalWrite(EN, LOW); //LOW ENABLE a4988
- digitalWrite(STEP, HIGH);//Crea el paso
- delay(1);
- digitalWrite(STEP, LOW);
- delay(1);
- }
- /**************************************************************************************************************/
- //Lectura mando
- int leeJoystick(int puerto){//Lee el puerto analogico A0
- //0<- 512 -> 1023
- int raw=analogRead(puerto);
- return map(raw,0,1023,0,10);//5 esta en el medio
- }
- /**************************************************************************************************************/
- /**************************************************************************************************************/
- void loop()//Bucle principal ARDUINO
- {
- lecturaJoystick = leeJoystick(A0);//Lectura A0
- sentidoGiro (lecturaJoystick >4? true :false);//Selecciona sentido lecturaJoystick + o -
- switch (leeJoystick(A0)){
- case 0:
- seleccionMicroPaso (0);
- break;
- case 1:
- seleccionMicroPaso (1) ;
- break;
- case 2:
- seleccionMicroPaso (2) ;
- break;
- case 3:
- seleccionMicroPaso (3) ;
- break;
- case 4:
- seleccionMicroPaso (4) ;
- break;
- case 5:
- seleccionMicroPaso (0) ;
- break;
- case 6:
- seleccionMicroPaso (4) ;
- break;
- case 7:
- seleccionMicroPaso (3) ;
- break;
- case 8:
- seleccionMicroPaso (2) ;
- break;
- case 9:
- seleccionMicroPaso (1) ;
- break;
- case 10:
- seleccionMicroPaso (0) ;
- break;
- }
- if (lecturaJoystick!=5){
- unPaso();
- }else{
- digitalWrite(EN, HIGH); //Ponemos a nivel ALTO , deshabilita A4988 evita consumo en paro
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement